#spring-boot #stomp #activemq-artemis
#весенняя загрузка #stomp #activemq-артемида
Вопрос:
StompHeaders headers = new StompHeaders();
headers.set("persistent", "false");
headers.set("expires", "30000");
headers.set("priority", 9);
Приведенная выше конфигурация заключается в том, чтобы срок действия сообщения не истекал в течение 30 секунд. Но срок действия сообщения истекает сразу после достижения очереди. Прослушиватель даже не получает сообщение.
Ответ №1:
expires
Заголовок указывает абсолютное время истечения срока действия сообщения (например, как JMSExpiration
заголовок в сообщениях JMS), а не задержку, после которой срок действия сообщения истекает. Попробуйте это вместо:
StompHeaders headers = new StompHeaders();
headers.set("persistent", "false");
headers.set("expires", System.currentTimeMillis() 30000);
headers.set("priority", 9);
Когда вы устанавливаете expires
значение 30000
, это сообщает брокеру, что срок действия сообщения истек в далеком прошлом, поэтому он не доставит сообщение клиенту.
Кстати, я удалил durable
заголовок, потому что он ничего не делает в ActiveMQ Artemis.