如果为消息设置了 STOMP "expires" header,则消息立即过期,无需等待 header 中设置的过期时间
If STOMP "expires" header is set for a message, the message expires right away without waiting for the expiry period set in the header
StompHeaders headers = new StompHeaders();
headers.set("persistent", "false");
headers.set("expires", "30000");
headers.set("priority", 9);
上面的配置是让消息30秒不会过期。但是消息在到达队列后立即过期。监听器甚至没有收到消息。
expires
header 表示消息将过期的绝对时间(例如像 JMS 消息上的 JMSExpiration
header),而不是延迟消息将过期。试试这个:
StompHeaders headers = new StompHeaders();
headers.set("persistent", "false");
headers.set("expires", System.currentTimeMillis() + 30000);
headers.set("priority", 9);
当您将 expires
设置为 30000
时,这会告诉代理消息在很久以前就已过期,因此它不会将消息传递给客户端。
顺便说一下,我删除了 durable
header 因为它在 ActiveMQ Artemis 中没有任何作用。
StompHeaders headers = new StompHeaders();
headers.set("persistent", "false");
headers.set("expires", "30000");
headers.set("priority", 9);
上面的配置是让消息30秒不会过期。但是消息在到达队列后立即过期。监听器甚至没有收到消息。
expires
header 表示消息将过期的绝对时间(例如像 JMS 消息上的 JMSExpiration
header),而不是延迟消息将过期。试试这个:
StompHeaders headers = new StompHeaders();
headers.set("persistent", "false");
headers.set("expires", System.currentTimeMillis() + 30000);
headers.set("priority", 9);
当您将 expires
设置为 30000
时,这会告诉代理消息在很久以前就已过期,因此它不会将消息传递给客户端。
顺便说一下,我删除了 durable
header 因为它在 ActiveMQ Artemis 中没有任何作用。