通过ActiveMQ Spring JMS使用delay功能后如何获取消费的延迟时间? 要解决这个问题,可以在发送消息时给消息设置一个延迟时间,然后在消费消息时获取这个延迟时间。具体的解决方法可以使用ActiveMQ的延迟功能,在发送消息时设置延迟时间,在消费消息时从消息的属性中获取延迟时间。示例代码如下:
发送消息:
ActiveMQQueue destination = new ActiveMQQueue("test.queue");
jmsTemplate.convertAndSend(destination, message, new DelayMessagePostProcessor(delayTime));
消费消息:
Message message = messageConsumer.receive(5000);
if (message instanceof ActiveMQMessage) {
ActiveMQMessage activeMQMessage = (ActiveMQMessage) message;
long delayTime = activeMQMessage.getBrokerInTime() - activeMQMessage.getBrokerOutTime();
}
在消费消息时,从消息属性中获取延迟时间,即消息发出时间距离消息到达ActiveMQ Broker的时间,可以通过getBrokerInTime()和getBrokerOutTime()方法获取。
上一篇:ActivemqSpringBoot中的RedeliveryPolicy无法正常工作。
下一篇:ActiveMQSSL错误outboundhasclosed,ignoreoutboundalertmessage:close_notify