V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Hug125
V2EX  ›  Java

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

  •  
  •   Hug125 · 2021-12-14 19:49:07 +08:00 · 2117 次点击
    这是一个创建于 1107 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    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. 服务多实例,但是将其它实例停掉,还是无法延时推送;
    7 条回复    2021-12-18 16:59:39 +08:00
    qiyuey
        1
    qiyuey  
       2021-12-14 20:43:03 +08:00 via Android
    确认一下消息队列的类型
    Hug125
        2
    Hug125  
    OP
       2021-12-14 21:59:26 +08:00
    @qiyuey #1 请问消息队列类型是指?
    用的 RocketMQ 同样的配置在之前的项目里是可以延时推送消息的,在新的项目里就无效果了
    qiyuey
        3
    qiyuey  
       2021-12-14 22:29:21 +08:00 via Android
    @Hug125 新建 Topic 的时候需要选择是普通消息、顺序消息、事务消息、延时消息
    Hug125
        4
    Hug125  
    OP
       2021-12-15 09:38:44 +08:00
    @qiyuey #3 我们所有项目用的是同一套 Topic ,之前同一个 Topic 还成功过,现在就不好使,搞不懂是为啥子。
    当前用的 Topic 是全局顺序消息。
    KingOfUSA
        5
    KingOfUSA  
       2021-12-15 18:51:53 +08:00
    看看 1 楼的回复。在新建 topic 的时候是需要选择类型的,大概率是你新建的 topic 是普通消息。
    Hug125
        6
    Hug125  
    OP
       2021-12-18 13:18:01 +08:00
    @KingOfUSA #5 是的 之前都用的同一个 topic ,是全局顺序消息的,新建了一个延时消息的 Topic ,就可以了;
    不解的是 之前的项目为啥全局消息还能正常延时发送,可能是用的包比较旧?
    RocketMQ 的 TCP MAVEN 包是 1.8.0 , Springboot 用的 2.2.2
    KingOfUSA
        7
    KingOfUSA  
       2021-12-18 16:59:39 +08:00
    @Hug125 肯定不是延时消息了。你觉得像是延时小时,大概率是没有其他的消费者,然后你启动了刚好消费到,或者消费过程中失败了,按照策略会晚点继续消费,然后此时恰好消费成功了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1061 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:41 · PVG 06:41 · LAX 14:41 · JFK 17:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.