Наша инфраструктура JMS сбалансирована по нагрузке.В результате этого я пытаюсь использовать connectionNameList при настройке фабрики соединений.Идея заключается в том, что любое сообщение JMS, которое поступает в первичный или вторичный администратор очередей, будет взято и обработано.Однако кажется, что сообщения перехватываются первичным сервером.
Вот моя аннотация прослушивателя:
@JmsListener(destination = "${request-queue}", containerFactory = "DefaultJmsListenerContainerFactory")
public void onMessage(Message msg) {
System.out.println(msg.toString());
}
Вот фабрика контейнеров слушателя JMS:
@Bean(name = "DefaultJmsListenerContainerFactory")
public DefaultJmsListenerContainerFactory createJmsListenerContainerFactory() {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(buildConnectionFactory());
factory.setConcurrency(numberOfListeners);
factory.setSessionAcknowledgeMode(Session.AUTO_ACKNOWLEDGE);
factory.setSessionTransacted(false);
factory.setErrorHandler(queueErrorHandler);
factory.setBackOff(getBackOffStrategy());
return factory;
}
А вот и фабрика соединений:
@Bean(name = "MQConnectionFactory")
public ConnectionFactory buildConnectionFactory() {
try {
MQConnectionFactory mqcf = new MQConnectionFactory();
mqcf.setConnectionNameList(mq1.daluga.com(2171),mq2.daluga.com(2171));
mqcf.setChannel(channel);
mqcf.setTransportType(WMQConstants.WMQ_CM_CLIENT);
return mqcf;
} catch (Exception e) {
throw new RuntimeException(message, e);
}
}
Я подозреваю, что в моей конфигурации что-то не так.Есть ли что-то очевидное, что люди видят, что это может привести к тому, что сообщения не будут получены из вторичного администратора очередей?
Спасибо!