RabbitTemplate и ReplyTimeOut - PullRequest
       26

RabbitTemplate и ReplyTimeOut

0 голосов
/ 09 апреля 2019

У меня есть проект, в котором я установил время ожидания 5 секунд (getRabbitTemplate (). SetReplyTimeout (5000)), и я использую метод sendAndReceive для отправки сообщений: getXbidRabbitTemplate () SendAndReceive (exchange, routingkey, msg).
Сегодня произошла ошибка в соединении

(ShutdownSignalException)

, но в двух поставках не было TimeOut.Первая отгрузка произошла в 09-04-2019 07: 25: 33.980;и второе в 09-04-2019 07: 25: 36.902;


Я не получил ответа (или какой-либо ошибки) и вскоре после того, как произошла ошибка соединения (в 09-04-201907: 25: 52.939)

В других случаях мы обнаружили ошибку TimeOut, и единственное изменение конфигурации состоит в том, что мы удалили retryTemplate из конфигурации RabbitTemplate.

Так мы обнаруживаемthe TimeOut:

getRabbitTemplate().setReplyTimeout(5000);
mResponse = getRabbitTemplate().sendAndReceive(exchange, routingkey, msg);
if(mResponse == null)
{
      //    TIMEOUT
}

Я ожидал, что если в течение этих 5 секунд не будет получен ответ, я войду в часть TIMEOUT.Возможно ли, что если соединение разорвано и сообщение не достигло сервера, этот TIMEOUT не произойдет?

1 Ответ

1 голос
/ 09 апреля 2019

Тайм-аут не имеет никакого отношения к общению с кроликами, вызывающий поток просто вызывает get(timeout, TimeUnitMilliseconds) в будущем.Когда ответ получен (в другом потоке), он завершает будущее, и get() возвращает этот результат.Если ответ не получен, время ожидания get() истекло.

Я не вижу способа, чтобы поток не мог прекратить время ожидания.

...