问题描述
StompHeaders headers = new StompHeaders();
headers.set("persistent","false");
headers.set("expires","30000");
headers.set("priority",9);
以上配置是为了使消息在30秒内不过期。但是消息到达队列后立即过期。侦听器甚至没有收到消息。
解决方法
expires
标头指示消息过期的绝对时间(例如,像JMS消息上的JMSExpiration
标头一样),而不是消息过期之前的延迟。尝试以下方法:
StompHeaders headers = new StompHeaders();
headers.set("persistent","false");
headers.set("expires",System.currentTimeMillis() + 30000);
headers.set("priority",9);
当您将expires
设置为30000
时,它告诉代理该消息在过去的某个时间过期,因此不会将消息传递给客户端。
顺便说一句,我删除了durable
标头,因为它在ActiveMQ Artemis中没有任何作用。