java - 故障转移时的 ActiveMQ MessageConsumer 行为
问题描述
我有一个应用程序,它在启动时注册 MessageConsumer 对象的静态列表,并在消息进入时在后台执行操作(通过 MessageListener 对象)。我想确保我的代码正确处理故障转移。如果发生故障转移,MessageConsumer 对象会自动转移到故障转移连接还是我需要重新创建消费者?这是代码的相关部分:
public class ActiveMQHandler {
private final List<MessageConsumer> consumers = new ArrayList<>();
private final Connection connection;
private final Session session;
public class ActiveMQHandler() {
String url = "failover(ssl://...,ssl://...)";
ActiveMQSslConnectionFactory factory = new ActiveMQSslConnectionFactory(url);
connection = factory.createConnection();
connection.start();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
...
MessageConsumer consumer = session.createConsumer(...);
consumer.setMessageListener(...); // will these still trigger after failover or do I need to recreate the consumer?
consumers.add(consumer);
...
}
public void shutdown() {
// close everything
...
}
}
解决方案
故障转移传输的重点是使过程尽可能透明,是的,如果您创建了消费者,那么故障转移传输将在重新连接时使用代理重新创建该资源。
推荐阅读
- java - Spring boot AMQP并发监听器顺序执行?
- java - 我在打印数组中的元素时遇到问题,以便任何两个重复的元素出现一次
- javascript - 将 JS Div 反应为 png 或捕获 Div
- reactjs - beforeEach 没有开玩笑地执行
- c - 如何在c中删除或清除POSIX消息队列中的所有消息?
- java - 在 Fragment 和 activity 之间切换时 Admob 插页式广告不显示
- angular - 使用 Microsoft Active Directory 进行 Angular 8 用户身份验证
- ios - 如何在 Flutter 的原生 iOS 代码中使用 print 方法?
- python - 当两个数据点位于同一位置时,绘图注释重叠
- python - Python-requests,HTTPS 代理身份验证 <407 需要代理身份验证>