V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Sponsored by
LinkedIn
2000 个不用坐班的远程好工作在召唤你 · 弹性上班不打卡,工作和生活都能拥有
2000 个不用坐班的全球远程工作,帮助 V2EX 的小伙伴开启全新的工作方式。
Promoted by LinkedIn
Hug125
V2EX  ›  Java

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

  •  
  •   Hug125 · 284 天前 · 1342 次点击
    这是一个创建于 284 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    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  
       284 天前 via Android
    确认一下消息队列的类型
    Hug125
        2
    Hug125  
    OP
       284 天前
    @qiyuey #1 请问消息队列类型是指?
    用的 RocketMQ 同样的配置在之前的项目里是可以延时推送消息的,在新的项目里就无效果了
    qiyuey
        3
    qiyuey  
       284 天前 via Android
    @Hug125 新建 Topic 的时候需要选择是普通消息、顺序消息、事务消息、延时消息
    Hug125
        4
    Hug125  
    OP
       283 天前
    @qiyuey #3 我们所有项目用的是同一套 Topic ,之前同一个 Topic 还成功过,现在就不好使,搞不懂是为啥子。
    当前用的 Topic 是全局顺序消息。
    KingOfUSA
        5
    KingOfUSA  
       283 天前
    看看 1 楼的回复。在新建 topic 的时候是需要选择类型的,大概率是你新建的 topic 是普通消息。
    Hug125
        6
    Hug125  
    OP
       280 天前
    @KingOfUSA #5 是的 之前都用的同一个 topic ,是全局顺序消息的,新建了一个延时消息的 Topic ,就可以了;
    不解的是 之前的项目为啥全局消息还能正常延时发送,可能是用的包比较旧?
    RocketMQ 的 TCP MAVEN 包是 1.8.0 , Springboot 用的 2.2.2
    KingOfUSA
        7
    KingOfUSA  
       280 天前
    @Hug125 肯定不是延时消息了。你觉得像是延时小时,大概率是没有其他的消费者,然后你启动了刚好消费到,或者消费过程中失败了,按照策略会晚点继续消费,然后此时恰好消费成功了。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1099 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 20:20 · PVG 04:20 · LAX 13:20 · JFK 16:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.