Я новичок в RabbitMQ и пытаюсь следующий сценарийснова поставить сообщение в RabbitMQ с использованием Spring ampq
-> производитель посылает сообщение
-> потребитель получает сообщение
- Выполнить свою собственную логику
если логика не удается - снова поставить
-> снова поставить в сообщении, если потребитель терпит неудачу (машина идет вниз)
Я выполнил основную отправителя с использованием 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 необходимо переопределить. Но я не уверен, как это можно сделать через слушателя.
Спасибо за быстрый ответ. Есть ли свойство или способ игнорировать сообщение или отправить сообщение в очередь мертвой буквы после «n» количества попыток. (при условии, что n будет указано) – Pradeep
Добавить «повторный перехватчик» в «цепочку консультаций» слушателя. Настройте перехватчик с помощью «RejectAndDontRequeueRecoverer», который будет вызываться при повторном запуске повторных попыток; сообщение будет отправлено в DLX/DLQ, если исходная очередь настроена так. В качестве альтернативы вы можете перепечатать непосредственно в другую очередь с дополнительной информацией (например, трассировкой стека исключения) с помощью 'RepublishMessageRecoverer'. Дополнительную информацию см. В [документации] (http://docs.spring.io/spring-amqp/docs/latest-ga/reference/html/amqp.html#async-listeners). –
По умолчанию восстанавливаются только журналы и завершаются нормально, поэтому сообщение только регистрируется и удаляется. –