528
人物
消息过滤__特色功能_消息队列 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-阿里云