RocketMQ 延时消息失效问题排查:订单服务库存更新延迟
根据提供的代码,可以看到发送 RocketMQ 消息时设置了延时发送的参数,但是问题描述中提到延时消息没有延时发送,可能存在以下几个原因:
-
RocketMQ Broker 的配置问题:检查 RocketMQ Broker 的配置文件,确认是否开启了延时消息的功能。在
broker.properties
文件中,需要设置enableDelayTime=true
。 -
延时级别设置错误:在代码中设置了延时级别为 3,这意味着消息会在 10s 后发送。如果你期望消息在更长的时间后发送,可以根据 RocketMQ 的配置设置不同的延时级别。例如,如果想要延时 30s 发送,可以设置
setProperty(MessageConst.PROPERTY_DELAY_TIME_LEVEL, '4')
。 -
消息发送失败:检查是否有错误日志或异常抛出,以确定消息是否成功发送到 RocketMQ。可以通过查看 RocketMQ 的日志文件或者调整日志级别来获取更多的信息。
-
消费者消费延时消息失败:如果消息成功发送到 RocketMQ,但是在 search 服务中消费时发现库存还是下单扣减前的库存,可能是消费者的问题。可以检查 search 服务中的消费者代码,确保正确处理延时消息,并及时更新 ES 库存标志。
综上所述,可以根据以上原因逐一排查,确定延时消息没有延时发送的具体原因。
原文地址: http://www.cveoy.top/t/topic/phGR 著作权归作者所有。请勿转载和采集!