2015-04-06 45 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對安全性,頻道等有點挑剔,但我想你知道這一切。 –