如果为邮件设置了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中没有任何作用。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...