apache / rocketmq-client-go

Apache RocketMQ go client
https://rocketmq.apache.org/
Apache License 2.0
1.29k stars 415 forks source link

能针对primitive.MessageExt级别做异步ack吗? #1067

Closed zhangbiaoyg closed 1 year ago

zhangbiaoyg commented 1 year ago

image 针对primitive.MessageExt ,是否可做消息级别的ack啊。现在这种是不是只能在这个处理函数中进行同步处理业务逻辑,因为必须返回成功和失败。如果消息量较大,想将消息分给很多协程处理,处理完成后,针对primitive.MessageExt级别做ack是否可以?

heshiyingx commented 1 year ago

解决方案: 1.设置批量获取的大小为1,处理完一个再进行 下一个。 2.本地数据库进行维护记录,或者将失败的消息再投递一次,再或者只要有一个失败,就返回ConsumeRetryLater,同时告警(前提做好消息幂等处理)

cserwen commented 1 year ago

image 针对primitive.MessageExt ,是否可做消息级别的ack啊。现在这种是不是只能在这个处理函数中进行同步处理业务逻辑,因为必须返回成功和失败。如果消息量较大,想将消息分给很多协程处理,处理完成后,针对primitive.MessageExt级别做ack是否可以?

SDK 默认就是并发消费,即多个协程去消费一个queue中的消息,使用者不用关心这个并发的问题 @zhangbiaoyg ,只需要针对单条消息做ack即可

francisoliverlee commented 1 year ago

we would close the issue, feel free to re-open it