开发者社区 > 云原生 > 云消息队列 > 正文

消息队列RocketMQ版同一条消息,为什么发送方和订阅方的 msgid 不一样?

消息队列RocketMQ版同一条消息,为什么发送方和订阅方的 msgid 不一样?

展开
收起
Lee_tianbai 2021-01-01 16:46:51 1597 0
1 条回答
写回答
取消 提交回答
    1. 检查是否是事务消息或延时消息,如果是,则是正常现象。需要做幂等的话 可以使用消息 key 来做幂等。事务消息或延时消息订阅方的 msgid 取的是 transactionId。 通过 message.getMsgID() 这个获取的 transactionId 在控制台上是查不 到消息的,这时候可以通过 message.getUserProperties().getProperty("UNIQ_KEY") 这个来获取真正的 msgid。
    2. 因为某些 sdk 的原因,有可能发送方和订阅方的 msgid 也会不一样。任何 类型的消息都是这样,这时订阅方的 msgid 是 offsetmsgid。这个很好区 分,transactionId 中英文字母是小写的,msgid 和 offsetmsgid 中英文字 母都是大写的。
    2021-01-01 16:47:07
    赞同 展开评论 打赏

涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/

相关电子书

更多
消息队列kafka介绍 立即下载
Rocket MQ 使用排查指南 立即下载
消息队列 Kafka 版差异化特性 立即下载