首页 > 解决方案 > 如何使用 Spring AMQP 设置最大连接重试次数

问题描述

我有一个场景,我的 rabbit mq 实例并不总是可用,并且想设置连接重试发生的最大次数,amqp 可以吗?

例子,

@Bean
public ConnectionFactory connectionFactory() {
  CachingConnectionFactory factory = new CachingConnectionFactory();
  factory.setUri("amqprl//");
  factory ../ try uri connection for 4 times max then fail if still no connection
  return factory;
}

标签: spring-bootspring-amqp

解决方案


消息生产者只会在您发送消息时尝试创建连接。

消息消费者(容器工厂)将无限期地重试。

您可以在发生一定次数的故障后ConnectionListener向连接工厂和侦听器容器添加一个。stop()

@FunctionalInterface
public interface ConnectionListener {

    /**
     * Called when a new connection is established.
     * @param connection the connection.
     */
    void onCreate(Connection connection);

    /**
     * Called when a connection is closed.
     * @param connection the connection.
     * @see #onShutDown(ShutdownSignalException)
     */
    default void onClose(Connection connection) {
    }

    /**
     * Called when a connection is force closed.
     * @param signal the shut down signal.
     * @since 2.0
     */
    default void onShutDown(ShutdownSignalException signal) {
    }

    /**
     * Called when a connection couldn't be established.
     * @param exception the exception thrown.
     * @since 2.2.17
     */
    default void onFailed(Exception exception) {
    }

}

推荐阅读