java – 不使用XML配置的WebSphereMQ的ActiveMQ桥接器

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

是否有明确的方法将ActiveMQ中的桥接连接器配置为WebSphere MQ,对于嵌入式代理,通过使用Java代码来使用XML配置?

我知道通过使用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.

解决方法:

这很简单.
以下示例将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();
上一篇:博弈论总结


下一篇:自定义docker容器网络地址