Reactor RabbitMQ: восстановиться после тайм-аута подтверждения?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Reactor RabbitMQ: восстановиться после тайм-аута подтверждения?

Сообщение Anonymous »

Каков подходящий способ восстановления таймаутов подтверждения доставки с помощью Reactor RabbitMQ?
Мы используем клиентскую библиотеку Reactor RabbitMQ, настроенную с помощью ConsumerManualAck. Время от времени в наших журналах мы наблюдаем следующую ошибку:

c.r.c.ShutdownSignalException: ошибка канала; метод протокола: #method(reply-code=406, report-text=PRECONDITION_FAILED — истекло время ожидания подтверждения доставки на канале 5. Используемое значение таймаута: 1800000 мс. Это значение таймаута можно настроить, см. руководство по документации для потребителей. узнать м...

После этого оператора (предположительно зарегистрированного этим оператором) канал немедленно закрывается, Reactive Flux прекращается и обработка сообщений соответственно останавливается.
В клиенте настроен обработчик исключений повторного подтверждения в попытке минимизировать количество сбоев подключения:

Код: Выделить всё

Receiver receiver = RabbitFlux.createReceiver();

ConsumeOptions consumeOptions = new ConsumeOptions()
.exceptionHandler(new ExceptionHandlers.RetryAcknowledgmentExceptionHandler(
Duration.ofSeconds(10),
Duration.ofMillis(200),
ExceptionHandlers.CONNECTION_RECOVERY_PREDICATE
));

receiver.consumeManualAck("queue_name", consumeOptions)
.subscribe(delivery -> {
// message processing omitted
// acknowledge message
delivery.ack();
});
Однако мы, должно быть, что-то упустили из виду, поскольку проблема все равно время от времени наблюдается.

В поиске для решения в этом ответе SO указано, что можно изменить значение тайм-аута. Однако это не решит проблему, поскольку Flux все равно будет завершаться, хотя и с другой частотой.

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

Подробнее здесь: https://stackoverflow.com/questions/791 ... nt-timeout
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»