RabbitTemplate 和 ReplyTimeOut

RabbitTemplate and ReplyTimeOut

我有一个项目,我将超时设置为 5 秒 (getRabbitTemplate (). SetReplyTimeout (5000)) 并且我使用 sendAndReceive 方法发送消息:getXbidRabbitTemplate () SendAndReceive (exchange, routingkey, msg).
今天连接出错

(ShutdownSignalException)

但是两次出货都没有超时。 第一次发货发生在09-04-2019 07:25:33.980;第二个在 09-04-2019 07: 25: 36.902;


我没有收到答复(或任何错误),并且在连接错误跳转后不久(在 09-04-2019 07:25:52.939)

其他时候,我们检测到超时错误,唯一的配置更改是我们从 RabbitTemplate 配置中删除了 retryTemplate。

这就是我们检测超时的方式:

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

我预计如果在那5秒内没有得到答案,我会进入TIMEOUT部分。是否有可能如果连接断开并且消息未到达服务器,则不会发生超时?

超时与任何兔子通信无关,调用线程只是在未来调用 get(timeout, TimeUnitMilliseconds)。当收到回复时(在另一个线程上),它完成了未来和 get() returns 结果。如果没有收到回复,get() 超时。

我看不出线程永远不会超时的任何方式。