如何解决如果为邮件设置了STOMP“ expires”标头,则该消息立即过期,而无需等待标头中设置的有效期限
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中没有任何作用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。