请教一个阿里云消息队列延时消息的问题,设置延时消息无效。

2021-12-14 19:49:07 +08:00
 Hug125

设置了消息延时发送,但是被消费者服务立即消费了。 请问论坛中有没有人遇到过相同的问题,是如何解决的,或者有什么解决的思路? 延时发送的代码:

long sendTime = System.currentTimeMillis() + delayTime;
msg.setStartDeliverTime(sendTime);
SendResult sendResult = producer.send(msg);

生产者发送日志如图:

消息轨迹如图:

日志里的时间和消息轨迹里的生产时间不同是因为 debug ; 之前的项目里这样处理是没有问题的,新的项目需要使用这个业务的时候发现了这个 bug 。


目前已排除的影响因素:

  1. ONS 的 MAVEN 版本,1.8.0 VS 1.8.8.1 都无法延时推送消息;
  2. 服务多实例,但是将其它实例停掉,还是无法延时推送;
2094 次点击
所在节点    Java
7 条回复
qiyuey
2021-12-14 20:43:03 +08:00
确认一下消息队列的类型
Hug125
2021-12-14 21:59:26 +08:00
@qiyuey #1 请问消息队列类型是指?
用的 RocketMQ 同样的配置在之前的项目里是可以延时推送消息的,在新的项目里就无效果了
qiyuey
2021-12-14 22:29:21 +08:00
@Hug125 新建 Topic 的时候需要选择是普通消息、顺序消息、事务消息、延时消息
Hug125
2021-12-15 09:38:44 +08:00
@qiyuey #3 我们所有项目用的是同一套 Topic ,之前同一个 Topic 还成功过,现在就不好使,搞不懂是为啥子。
当前用的 Topic 是全局顺序消息。
KingOfUSA
2021-12-15 18:51:53 +08:00
看看 1 楼的回复。在新建 topic 的时候是需要选择类型的,大概率是你新建的 topic 是普通消息。
Hug125
2021-12-18 13:18:01 +08:00
@KingOfUSA #5 是的 之前都用的同一个 topic ,是全局顺序消息的,新建了一个延时消息的 Topic ,就可以了;
不解的是 之前的项目为啥全局消息还能正常延时发送,可能是用的包比较旧?
RocketMQ 的 TCP MAVEN 包是 1.8.0 , Springboot 用的 2.2.2
KingOfUSA
2021-12-18 16:59:39 +08:00
@Hug125 肯定不是延时消息了。你觉得像是延时小时,大概率是没有其他的消费者,然后你启动了刚好消费到,或者消费过程中失败了,按照策略会晚点继续消费,然后此时恰好消费成功了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/822215

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX