Java 我在Spring框架中使用rabbitmq,如何在创建连接时调用basicRecover?
我使用的是rabbitmq spring框架。我的队列有一个问题,在rabbitmq使用者部署期间,突然断开连接会留下未确认的消息Java 我在Spring框架中使用rabbitmq,如何在创建连接时调用basicRecover?,java,spring,rabbitmq,Java,Spring,Rabbitmq,我使用的是rabbitmq spring框架。我的队列有一个问题,在rabbitmq使用者部署期间,突然断开连接会留下未确认的消息 <rabbit:listener-container id="MyListenerContainer" connection-factory="MyRabbitConsumerConnectionFactory" prefetch="100" concurrency="5" acknowledge="manual" au
<rabbit:listener-container id="MyListenerContainer"
connection-factory="MyRabbitConsumerConnectionFactory"
prefetch="100"
concurrency="5"
acknowledge="manual"
auto-startup="true">
<rabbit:listener queues="MyRabbitQueue" ref="MyConsumer"/>
MyConsumer实现了ChannelAwareMessageListener接口。
如何在创建连接期间发出basicRecover(true)方法
谢谢尝试使用
com.rabbitmq.client.ConnectionFactory
:
/**
* Enables or disables <a href="http://www.rabbitmq.com/api-guide.html#recovery">automatic connection recovery</a>.
* @param automaticRecovery if true, enables connection recovery
* @see <a href="http://www.rabbitmq.com/api-guide.html#recovery">Automatic Recovery</a>
*/
public void setAutomaticRecoveryEnabled(boolean automaticRecovery) {
this.automaticRecovery = automaticRecovery;
}
/**
*启用或禁用。
*@param automaticRecovery如果为true,则启用连接恢复
*@见
*/
public void setAutomaticRecoveryEnabled(布尔值automaticRecovery){
this.automaticRecovery=自动恢复;
}
默认情况下为
false
。尝试使用com.rabbitmq.client.ConnectionFactory
:
/**
* Enables or disables <a href="http://www.rabbitmq.com/api-guide.html#recovery">automatic connection recovery</a>.
* @param automaticRecovery if true, enables connection recovery
* @see <a href="http://www.rabbitmq.com/api-guide.html#recovery">Automatic Recovery</a>
*/
public void setAutomaticRecoveryEnabled(boolean automaticRecovery) {
this.automaticRecovery = automaticRecovery;
}
/**
*启用或禁用。
*@param automaticRecovery如果为true,则启用连接恢复
*@见
*/
public void setAutomaticRecoveryEnabled(布尔值automaticRecovery){
this.automaticRecovery=自动恢复;
}
默认情况下,它是
false
。您可以使用RabbitMQ管理HTTP API列出所有通道,然后在每个通道的详细信息上,您可以看到它空闲了多长时间,并做出相应的反应,例如关闭通道,这将自动拒绝仍然挂在该通道上的任何未确认消息
请参见此处:您可以使用RabbitMQ管理HTTP API列出所有通道,然后在每个通道的详细信息上,您可以看到它空闲了多长时间,并做出相应的反应,例如关闭通道,这将自动删除仍然挂在该通道上的任何未确认消息
请参见此处:我已启用自动恢复。我可以恢复连接。停止我的使用者(停止我的使用者的进程),然后稍后重新启动后我的问题。在停止消费的那一刻,留下了许多未确认的信息。所以我想在第一次建立连接时给basicRecover打电话。我不想猜测和复制/粘贴,所以我要把你发送到正确的链接:我在ConnectionFactory上添加了一个channelListener。在onCreate方法中,我将发布channel.basicRecover(true)。我有一个问题,由于channel.basicRecover(真)?从我的角度来看,重新传递的消息已将重新传递标志设置为真。您的邮件已发送一次。因此,恢复跟踪它并让您的新消费者知道以前发生了意外。在这种情况下,重新交付标志是否设置为true?我已启用自动恢复。我可以恢复连接。停止我的使用者(停止我的使用者的进程),然后稍后重新启动后我的问题。在停止消费的那一刻,留下了许多未确认的信息。所以我想在第一次建立连接时给basicRecover打电话。我不想猜测和复制/粘贴,所以我要把你发送到正确的链接:我在ConnectionFactory上添加了一个channelListener。在onCreate方法中,我将发布channel.basicRecover(true)。我有一个问题,由于channel.basicRecover(真)?从我的角度来看,重新传递的消息已将重新传递标志设置为真。您的邮件已发送一次。因此,恢复跟踪它并让您的新消费者知道以前发生了意外情况,这是好消息。在这种情况下,重新交付标志设置为true吗?