在JMS负载平衡环境中使用连接名称列表

时间:2018-05-25 12:48:22

标签: ibm-mq spring-jms

我们的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);
    }
}

我怀疑我的配置中的某些内容是不对的。是否有任何明显的人认为可能导致消息无法从辅助队列管理器中获取?

谢谢!

0 个答案:

没有答案