2015-04-06 59 views
4

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

是否有通过使用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代码,无需XML,从我的ActiveMQ本地代理到WebSphere MQ代理的连接。

回答

3

这很简单。 下面的例子将在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(); 
+0

真棒,我已经开始复习的BrokerService类试图找到一些东西,我发现了JmsConnector,所以我是通过所有的层次结构,直到JmsQueue/TopicFactory,但我无法推断如何设置属性连接到队列管理器和所有其他属性,非常感谢。我会尝试并发布结果 – MarceStarlet

+0

太棒了!发布的代码来自工作设置,因此您应该使其运行。 WMQ对安全性,频道等有点挑剔,但我想你知道这一切。 –