【问题标题】:ActiveMQ bridge connector to WebSphereMQ without using XML configActiveMQ 桥接器连接到 WebSphereMQ,而不使用 XML 配置
【发布时间】:2015-06-11 03:12:09
【问题描述】:

我想在嵌入式代理中创建 ActiveMQ 和 WebSphere MQ 之间的代理到代理连接。我知道 activemq 中存在网络连接器来执行此操作(代理到代理),但我不知道如何配置它以连接到 WebSphere MQ。在网络上进行搜索,我发现了一些不同的方式来处理 XML 配置,我注意到使用的 XML 标记不是指网络连接器,而是指 <jmsBridgeConnectors>,所以我使用 java 对这个桥连接器进行了研究代码,但我无法找到指向我如何做到这一点的东西。

是否有一种明确的方法可以通过使用 java 代码而不是使用 XML 配置来为嵌入式代理配置 ActiveMQ 中的桥接器连接到 WebSphere MQ?

我知道这可以通过使用 XML 配置来实现,但是,如果我正在实现一个嵌入式代理(正如我之前提到的),并且我想使用 Java 代码配置代理实例到 WebSphere MQ 的桥接器,该怎么办? , ActiveMQ 是否在 API 上提供类或接口来执行此操作?

这就是我连接两个 activemq 代理所做的工作

try {
        getBroker().addConnector("tcp://localhost:61616");
        getBroker().addNetworkConnector("static:(tcp://remotBroker:61616)");
    } catch (Exception e) {
        logger.error("Unexpected ERROR, connection lost.");
        e.printStackTrace();
    }

一个 TransportConnector 用于监听端口 61616,一个网络连接器用于建立从我的本地代理到 remoteBroker 的连接,两个代理都是 activemq 的实例。现在我想要使用 java 代码从我的 ActiveMQ 本地代理到 WebSphere MQ 代理的连接,而不是 XML。

【问题讨论】:

    标签: java activemq ibm-mq connector bridge


    【解决方案1】:

    这很简单。 以下示例将 ActiveMQ 队列 QUEUE42 上的所有消息发送到远程 WebSphere MQ 代理。更改连接设置。

    这要求您在类路径中有一些 WMQ 库:com.ibm.mq.jar 和 com.ibm.mqjms.jar(至少)。诀窍是简单地创建一个带有 QueueConnectionFactory(到 WMQ)的 JmsQueueConnector 以及您想要的任何入站/出站桥。网桥只是将被复制的队列名称。

        BrokerService broker = new BrokerService();
        broker.setBrokerName("amqbroker");
        broker.setPersistent(false);
        broker.setTransportConnectorURIs(new String[] {"tcp://localhost:61616"});
    
        // setup bridge
        JmsQueueConnector qCon = new JmsQueueConnector();
    
        JmsFactoryFactory ff = JmsFactoryFactory.getInstance(WMQConstants.WMQ_PROVIDER);
        JmsQueueConnectionFactory cf = ff.createQueueConnectionFactory();
        cf.setStringProperty(WMQConstants.WMQ_HOST_NAME, "192.168.13.151");
        cf.setIntProperty(WMQConstants.WMQ_PORT, 1414);
        cf.setStringProperty(WMQConstants.WMQ_CHANNEL, "SYSTEM.DEF.SVRCONN");
        cf.setIntProperty(WMQConstants.WMQ_CONNECTION_MODE, WMQConstants.WMQ_CM_CLIENT);
        cf.setStringProperty(WMQConstants.WMQ_QUEUE_MANAGER, "SUPERHERO");
    
        qCon.setOutboundQueueConnectionFactory(cf);
        OutboundQueueBridge outBridge1 = new OutboundQueueBridge("QUEUE42");
        qCon.setOutboundQueueBridges(new OutboundQueueBridge[] {outBridge1});
        broker.setJmsBridgeConnectors(new JmsConnector[] {qCon});
        broker.start();
    

    【讨论】:

    • 太棒了,我刚开始查看 BrokerService 类,试图找到一些东西,我发现了 JmsConnector,所以我经历了所有的层次结构,直到 JmsQueue/TopicFactory 但我无法推断出如何设置属性以连接到队列管理器和所有其他属性,非常感谢。我会尝试并发布结果
    • 太棒了!发布的代码来自工作设置,因此您应该让它运行。 WMQ 在安全、通道等方面可能有点挑剔,但我想你都知道。
    猜你喜欢
    • 2020-01-07
    • 1970-01-01
    • 2021-05-16
    • 2015-03-29
    • 2011-03-11
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多