Java RabbitMQ连接自动恢复

Java RabbitMQ连接自动恢复,java,rabbitmq,Java,Rabbitmq,我对RabbitMQ java客户端中连接的自动恢复有点困惑 考虑以下代码 ConnectionFactory factory; factory.setAutomaticRecoveryEnabled(true); Connection connection = factory.newConnection(); Channel chan_obj = conn.createChannel(); 根据RabbitMQ文档,如果连接断开,则自动恢复将重新创建连接、重新创建通道等。 当RabbitMQ

我对RabbitMQ java客户端中连接的自动恢复有点困惑

考虑以下代码

ConnectionFactory factory;
factory.setAutomaticRecoveryEnabled(true);
Connection connection = factory.newConnection();
Channel chan_obj = conn.createChannel();
根据RabbitMQ文档,如果连接断开,则自动恢复将重新创建连接、重新创建通道等。 当RabbitMQ自动恢复时,我真的很困惑如何处理“chan_obj”。 我很好奇恢复后从连接创建的“通道”是否可以用于对象“chan_obj” 另一个问题是,在恢复过程中,我是否会收到通道已关闭的通知,并希望随后会收到另一个通知,如“通道可以再次使用”

引用

另请参见和。

以引用

另见和

我很好奇这个“频道”是不是在 恢复将可用于对象“chan_obj”

是的,它将是可用的,但在恢复完成之前(通常,切换到活动RabbitMQ节点需要几秒钟),chan_obj上的操作可能会导致类似以下文本的异常:
AMQP操作被中断:AMQP关闭原因,由对等方启动,code=320,text='CONNECTION\u FORCED-broker强制关闭连接,原因为'shutdown',classId=0,methodId=0

另一个问题是在恢复过程中,我会得到什么 通知频道已关闭,希望随后会有另一个频道 类似“频道可以再次使用”的通知

不确定它是否在Java RabbitMQ客户端库中实现,因为处理连接/通道故障的标准方法是实现重试逻辑(例如,尝试在一个通道上执行相同的操作数次,但有一定的延迟)

我很好奇这个“频道”是不是在 恢复将可用于对象“chan_obj”

是的,它将是可用的,但在恢复完成之前(通常,切换到活动RabbitMQ节点需要几秒钟),chan_obj上的操作可能会导致类似以下文本的异常:
AMQP操作被中断:AMQP关闭原因,由对等方启动,code=320,text='CONNECTION\u FORCED-broker强制关闭连接,原因为'shutdown',classId=0,methodId=0

另一个问题是在恢复过程中,我会得到什么 通知频道已关闭,希望随后会有另一个频道 类似“频道可以再次使用”的通知

不确定它是否在Java RabbitMQ客户端库中实现,因为处理连接/通道故障的标准方法是实现重试逻辑(例如,尝试在一个通道上执行相同的操作数次,但有一定的延迟)

Create a new channel, using an internally allocated
channel number. If automatic connection recovery is
enabled, the channel returned by this method will
be Recoverable.