spring-boot - 如何使用 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;
}
解决方案
消息生产者只会在您发送消息时尝试创建连接。
消息消费者(容器工厂)将无限期地重试。
您可以在发生一定次数的故障后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) {
}
}
推荐阅读
- ios - Google Calendar API iOS 快速入门 自动登录
- c# - 从其通用基类引用特定类
- spring - java.lang.AssertionError:JSON 路径“$.version”mockMVC 处没有值
- java - 保护方法中的变量 | 爪哇
- arrays - 如何在 Julia 中找到多维数组的每个元素的长度?
- javascript - 如何将属性添加到对象中,它在函数中定义?
- arduino - VS1053 - 如何在不消失的情况下播放音调?
- c# - 从实现 IHttpModule 的类调用时声明为 null,但从控制器访问时声明为 null
- javascript - 样式和 javascript 文件不适用于在 Node.js 中提供 HTML 的页面
- sql - 在 Postgres 中加入 4 个表