【发布时间】:2020-02-03 08:46:14
【问题描述】:
我有一个应用程序,它在启动时注册 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
...
}
}
【问题讨论】: