Установить время ожидания по умолчанию с подтверждениями издателя

Я хочу реализовать пример с подтверждениями издателя 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 объект (подкласс) - дополнительный параметр в операции отправки.
  • В обратном вызове отсчет защелки.

Имейте в виду, однако, что ожидание подтверждения после каждой отправки значительно замедлит публикацию.

Он действительно предназначен для публикации множества сообщений и последующего ожидания их подтверждения.

Конечно, дизайн зависит от ваших требований.

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