Я новичок в rabbitmq и пробую следующий сценарий
-> производитель отправляет сообщение
-> потребитель получает сообщение
- Выполнить мою собственную логику
если логика не работает - запросите
-> повторно поставить сообщение в очередь, если потребитель выходит из строя (машина выходит из строя)
Я реализовал базовый отправитель с помощью Spring rabbitTemplate
rabbitTemplate.convertAndSend(.....);
и для потребителя я реализовал прослушиватель сообщений
public class CustomMessageListener implements MessageListener {
@Override
public void onMessage(Message message) {
//** my own logic**
}
}
и добавил в тару через весну
<bean id="aListener" class="com.sample.CustomMessageListener" autowire="byName"/>
<rabbit:listener-container id="myListenerContainer" connection-factory="connectionFactory" acknowledge="auto" prefetch="750" concurrency="5" >
<rabbit:listener ref="aListener" queues="reportQueue"/>
</rabbit:listener-container>
Он работает нормально до этой части.
теперь, если ** моя собственная логика **, упомянутая в слушателе, не работает. Я хочу повторно поставить сообщение в очередь. как я могу это реализовать. Из блогов, которые я просмотрел, похоже, что returnMessage нужно переопределить. Но я не уверен, как это можно сделать через слушателя.