Spring RabbitMq - слушатель событий, созданный в очереди

Я хотел бы знать, если какие-либо события публикуются, когда queue на самом деле физически создан в Rabbitmq с помощью Spring Api,

Причина, по которой я спрашиваю, так или иначе, у нас есть состояние гонки. Подписка на queue как-то обычно занимает больше времени, и в то время как подписка уже происходит, сообщение отправляется в эту очередь из BE, и в результате очередь не присутствует в Rabbitmq и сообщение потеряно и никогда не достигает FE.

Извините, я не могу предоставить какой-либо код как таковой, потому что он не имеет большого смысла, помещая небольшой фрагмент кода.

Но я уверен, проблема в том, что из-за состояния гонки сообщение в очередь отправляется еще до его создания. Так что, если есть некоторые event listener Я мог слушать после создания очереди, я мог переместить свою логику в этот метод.

Вот кусок кода,

stomp-client.js

 stompClient.subscribe(destination, function(msg) {});

WebsocketConnectionListener.java

@EventListener
public void handleWebSocketSessionSubscribeEvent(final SessionSubscribeEvent event) {

 // here I think this event is fired before the queue is actual created
 // this event is fired when u send subscription from stomp-client.js

 ...
 ...
 ...

 // trying to send message to this subscribed queue

 simpMessagingTemplate.convertAndSend(TOPIC_PREFIX + destination, data, headers);
 // now this message is lost as sometimes the queue creation takes longer.
 // unfortunately I want to move the convert and send method, when I could listen to queue created event.

 }

1 ответ

Событие не опубликовано, но вы можете добавить второе ConnectionListener к CachingConnectionFactory, Если вы убедитесь, что он добавлен после RabbitAdmin Вы можете быть уверены, что onCreate() Метод будет вызван после того, как администратор объявил все обмены, очереди, привязки.

Увидеть AbstractConnectionFactory.addConnectionListener,

Другие вопросы по тегам