我在 Spring 框架中使用 rabbitmq,如何在连接创建时调用 basicRecover?

I am using rabbitmq in Spring framework, how to call basicRecover on connection create?

我正在使用 rabbitmq spring 框架。我的队列有问题,在我的 rabbitmq 消费者部署期间,突然断开连接会留下未确认的消息。

<rabbit:listener-container id="MyListenerContainer"
    connection-factory="MyRabbitConsumerConnectionFactory"
    prefetch="100"
    concurrency="5"
    acknowledge="manual"
    auto-startup="true">
    <rabbit:listener queues="MyRabbitQueue" ref="MyConsumer"/>

<rabbit:queue id="MyRabbitQueue"
              name="MyRabbitQueue"
              declared-by="MyConsumerRabbitAdmin"
              auto-delete="false"
              durable="true"
              exclusive="false"/>

<rabbit:admin id="MyConsumerRabbitAdmin"
              connection-factory="MyRabbitConsumerConnectionFactory"
              auto-startup="true"/>

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;
}

默认为false

您可以使用 RabbitMQ Management HTTP API 列出所有通道,然后在每个通道的详细信息中您可以看到它空闲了多长时间并做出相应反应,例如关闭通道,将自动取消任何仍在该频道上徘徊的未确认消息。

看这里:http://hg.rabbitmq.com/rabbitmq-management/raw-file/3646dee55e02/priv/www-api/help.html