You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@rocketmq.apache.org by GitBox <gi...@apache.org> on 2019/10/17 07:51:23 UTC

[GitHub] [rocketmq] TonyStark888 opened a new issue #1540: 4.5.2版本 事务消息设置延迟时间后导致RMQ_SYS_TRANS_HALF_TOPIC爆掉的问题

TonyStark888 opened a new issue #1540: 4.5.2版本 事务消息设置延迟时间后导致RMQ_SYS_TRANS_HALF_TOPIC爆掉的问题
URL: https://github.com/apache/rocketmq/issues/1540
 
 
   官网虽有说明,事务消息不支持延迟发送,但我还是试了一下,发现目标Consumer不但不能正确收到生产者发的消息,而且在Console查看RMQ_SYS_TRANS_HALF_TOPIC消息是瞬间占满(最多显示2000条),已经翻阅源码,造成此问题的基本原因如下:
   1、设置DelayTimeLevel后,Broker端在调用EndTransactionProcessor时,目标Topic变成SCHEDULE_TOPIC_XXXX,REAL_TOPIC变成RMQ_SYS_TRANS_HALF_TOPIC,原有的真实Topic丢失。
   2、延迟时间到了之后,会往RMQ_SYS_TRANS_HALF_TOPIC发一条消息,但RMQ_SYS_TRANS_OP_HALF_TOPIC队列里无此消息。
   3、回查事务定时任务启动后,发现只在RMQ_SYS_TRANS_HALF_TOPIC有消息,触发该消息的回查事务方法,事务结束后,结果又往SCHEDULE_TOPIC_XXXX塞了一条消息。
   4、如此反复直至15次尝试用尽,最终丢弃此消息。
   
   个人认为有两个问题:
   1、耗费资源,每条消息尝试15次,调用15次事务回查,代价有点大。
   2、下游消费者一直收到不消息。
   
   以上是个人看法,如有不正确或未详尽之处请回复,谢谢

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services