Использование списка имен соединений в среде с балансировкой нагрузки JMS - PullRequest
0 голосов
/ 25 мая 2018

Наша инфраструктура 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);
    }
}

Я подозреваю, что в моей конфигурации что-то не так.Есть ли что-то очевидное, что люди видят, что это может привести к тому, что сообщения не будут получены из вторичного администратора очередей?

Спасибо!

...