Установить время ожидания по умолчанию с подтверждениями издателя
Я хочу реализовать пример с подтверждениями издателя AMQP, настроенными с таймаутом. Что-то вроде этого:
private final CountDownLatch confirmLatch = new CountDownLatch(1);
TransactionResponseFactory processingPeply = (TransactionResponseFactory) processingTransactionTemplate.convertSendAndReceive(
ContextServer.EXCHANGE_PROCESSING, ContextServer.ROUTING_KEY_PROCESSING_, tf);
if (processingTransactionTemplate.confirmLatch.await(10, TimeUnit.SECONDS)) {
System.out.println("Confirm received");
}
else {
System.out.println("Confirm NOT received");
// add some logic here to resend
}
Как правильно это реализовать?
1 ответ
- Добавить
RabbitTemplate.ConfirmCallback
к шаблону. - Отправить защелку в
CorrelationData
объект (подкласс) - дополнительный параметр в операции отправки. - В обратном вызове отсчет защелки.
Имейте в виду, однако, что ожидание подтверждения после каждой отправки значительно замедлит публикацию.
Он действительно предназначен для публикации множества сообщений и последующего ожидания их подтверждения.
Конечно, дизайн зависит от ваших требований.