RocketMQ中Topic、Tag如何正确使用

一、概念

1、Topic:消息主题,通过 Topic 对不同的业务消息进行分类。

2、Tag:消息标签,用来进一步区分某个 Topic 下的消息分类,消息队列 RocketMQ 允许消费者按照 Tag 对消息进行过滤,确保消费者最终只消费到他关注的消息类型。

Topic 与 Tag 都是业务上用来归类的标识,区分在于 Topic 是一级分类,而 Tag 可以说是二级分类,关系如图所示。

二、区分

您可能会有这样的疑问:到底什么时候该用 Topic,什么时候该用 Tag?

建议您从以下几个方面进行判断:

1、消息类型是否一致:如普通消息,事务消息,定时消息,顺序消息,不同的消息类型使用不同的 Topic,无法通过 Tag 进行区分。

2、业务是否相关联:没有直接关联的消息,如淘宝交易消息,京东物流消息使用不同的 Topic 进行区分;而同样是天猫交易消息,电器类订单、女装类订单、化妆品类订单的消息可以用 Tag 进行区分。

3、消息优先级是否一致:如同样是物流消息,盒马必须小时内送达,天猫超市 24 小时内送达,淘宝物流则相对会会慢一些,不同优先级的消息用不同的 Topic 进行区分。

4、消息量级是否相当:有些业务消息虽然量小但是实时性要求高,如果跟某些万亿量级的消息使用同一个 Topic,则有可能会因为过长的等待时间而『饿死』,此时需要将不同量级的消息进行拆分,使用不同的 Topic。

示例:

以天猫交易平台为例,订单消息,支付消息属于不同业务类型的消息,分别创建 Topic_Order 和 Topic_Pay,其中订单消息根据商品品类以不同的 Tag 再进行细分,如电器类、男装类、女装类、化妆品类,最后他们都被各个不同的系统所接收。

通过合理的使用 Topic 和 Tag,可以让业务结构清晰,更可以提高效率。

转载注明出处:Topic 与 Tag 最佳实践

  • 23
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
当然,我可以提供一个简单的RocketMQ示例。 首先,你需要按照RocketMQ的安装指南在你的环境安装和配置RocketMQ。完成后,你可以开始编写你的RocketMQ示例。 ```java import org.apache.rocketmq.client.producer.DefaultMQProducer; import org.apache.rocketmq.client.producer.SendResult; import org.apache.rocketmq.common.message.Message; public class RocketMQDemo { public static void main(String[] args) throws Exception { // 实例化消息生产者 DefaultMQProducer producer = new DefaultMQProducer("your_producer_group"); // 设置NameServer地址 producer.setNamesrvAddr("your_nameserver_address"); // 启动生产者 producer.start(); try { // 创建消息对象,指定TopicTag和消息内容 Message message = new Message("your_topic", "your_tag", "Hello, RocketMQ!".getBytes()); // 发送消息并获取发送结果 SendResult result = producer.send(message); System.out.println("SendResult: " + result); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭生产者 producer.shutdown(); } } } ``` 在上面的示例,你需要替换`your_producer_group`为你自己的生产者组名,`your_nameserver_address`为你的NameServer地址,以及`your_topic`和`your_tag`为你要发送消息的主题标签。 编译和运行这个示例后,它将通过RocketMQ发送一条包含"Hello, RocketMQ!"内容的消息。 请确保你已经正确配置了RocketMQ的环境,并且能够连接到你的RocketMQ服务器。希望这个示例能帮到你!如果有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值