528
iPhone_iPad_Mac_手機_平板_蘋果apple
消息過濾__特色功能_消息隊列 MQ-阿裏雲
消息過濾本文描述MQ消費者如何根據Tag在MQ服務端完成消息過濾。
Tag,即消息標簽、消息類型,用來區分某個MQ的Topic下的消息分類。MQ允許消費者按照Tag對消息進行過濾,確保消費者最終隻消費到他關心的消息類型。
以下圖所示電商交易場景為例,從客戶下單到收到商品這一過程會生產一係列消息,比如訂單創建消息(order)、支付消息(pay)、物流消息(logistics)。這些消息會發送到Topic為Trade_Topic的隊列中,被各個不同的係統所接收,比如支付係統、物流係統、交易成功率分析係統、實時計算係統等。其中,物流係統隻需接收物流類型的消息(logistics),而實時計算係統需要接收所有和交易相關(order、pay、logistics)的消息。
參考示例說明:針對消息歸類,用戶可以選擇創建多個Topic, 或者在同一個Topic下創建多個Tag。但通常情況下,不同的Topic之間的消息沒有必然的聯係,而Tag則用來區分同一個Topic下相互關聯的消息,比如全集和子集的關係,流程先後的關係。
發送消息
發送消息時,每條消息必須指明消息類型Tag:
Message msg = new Message("MQ_TOPIC","TagA","Hello MQ".getBytes());
消費方式-1
消費者如需訂閱某Topic下所有類型的消息,Tag用 * 符號表示:
consumer.subscribe("MQ_TOPIC", "*", new MessageListener() {
public Action consume(Message message, ConsumeContext context) {
System.out.println(message.getMsgID());
return Action.CommitMessage;
}
});
消費方式-2
消費者如需訂閱某Topic下某一種類型的消息,請明確標明Tag:
consumer.subscribe("MQ_TOPIC", "TagA", new MessageListener() {
public Action consume(Message message, ConsumeContext context) {
System.out.println(message.getMsgID());
return Action.CommitMessage;
}
});
消費方式-3
消費者如需訂閱某Topic下多種類型的消息,請在多個Tag之間用 || 分隔:
consumer.subscribe("MQ_TOPIC", "TagA||TagB", new MessageListener() {
public Action consume(Message message, ConsumeContext context) {
System.out.println(message.getMsgID());
return Action.CommitMessage;
}
});
消費方式-4(錯誤示例)
同一個消費者多次訂閱某Topic下的不同Tag,後者會覆蓋前者(錯誤示例) :
//如下錯誤代碼中,consumer隻能接收到MQ_TOPIC下TagB的消息,而不能接收TagA的消息。
consumer.subscribe("MQ_TOPIC", "TagA", new MessageListener() {
public Action consume(Message message, ConsumeContext context) {
System.out.println(message.getMsgID());
return Action.CommitMessage;
}
});
consumer.subscribe("MQ_TOPIC", "TagB", new MessageListener() {
public Action consume(Message message, ConsumeContext context) {
System.out.println(message.getMsgID());
return Action.CommitMessage;
}
});
最後更新:2016-05-06 10:44:49
上一篇:
運行 Demo__MQ Demo 工程_消息隊列 MQ-阿裏雲
下一篇:
集群消費和廣播消費__特色功能_消息隊列 MQ-阿裏雲
配置負載均衡__應用設置_用戶指南_企業級分布式應用服務 EDAS-阿裏雲
ClusterMetrics__數據類型_API文檔_批量計算-阿裏雲
公測服務試用協議__服務條款與價格模型_分布式關係型數據庫 DRDS-阿裏雲
查詢伸縮規則__伸縮規則相關接口_API參考_彈性伸縮-阿裏雲
一般性FAQ__產品常見問題_移動推送-阿裏雲
PHP SDK開發包__曆史版本SDK下載_SDK 參考_對象存儲 OSS-阿裏雲
BootstrapAction__數據類型_API參考_E-MapReduce-阿裏雲
7.4 查詢SQL優化__第七章 性能優化和診斷_使用手冊_分析型數據庫-阿裏雲
DomainItem__數據類型_API_API 網關-阿裏雲
設置解析記錄時提示衝突的原因__網站解析_產品使用問題_雲解析-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲