Соединитель моста ActiveMQ с WebSphereMQ без использования конфигурации XML

Я хочу создать посредник для подключения посредника между ActiveMQ и WebSphere MQ во встроенном посреднике. Я знаю, что для этого в activemq существует сетевой соединитель (брокер-брокер), но я не знаю, как его настроить для подключения к WebSphere MQ. Выполнив поиск в Интернете, я нашел несколько различных способов работы с конфигурацией XML и заметил, что используемые теги XML не относятся к сетевому соединителю, а относятся к <jmsBridgeConnectors>, поэтому я провожу исследование этого соединителя моста, используя код Java, но Я не смог найти что-то, что указывало бы мне на то, как это сделать.

Есть ли явный способ настроить соединитель моста в ActiveMQ на WebSphere MQ для встроенного брокера с использованием кода Java вместо использования конфигурации XML?

Я знаю, что это возможно при использовании конфигурации XML, но что, если я реализую встроенный брокер (как я уже упоминал ранее), и я хочу настроить экземпляр брокера с соединителем моста к WebSphere MQ с кодом java, делает ли 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. Теперь мне нужно соединение моего локального брокера ActiveMQ с брокером WebSphere MQ с использованием кода Java, без XML.


person MarceStarlet    schedule 06.04.2015    source источник


Ответы (1)


Все очень просто. В следующем примере все сообщения из очереди ActiveMQ QUEUE42 будут отправлены удаленному посреднику WebSphere MQ. Измените настройки подключения.

Для этого вам потребуется несколько библиотек WMQ в пути к классам: com.ibm.mq.jar и com.ibm.mqjms.jar (по крайней мере). Хитрость заключается в том, чтобы просто создать JmsQueueConnector с QueueConnectionFactory (для WMQ) и любыми входящими / исходящими мостами, которые вы хотите. Мосты - это просто имена очередей, которые будут скопированы.

    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();
person Petter Nordlander    schedule 06.04.2015
comment
Прекрасно, я только начал просматривать класс BrokerService, пытаясь что-то найти, и я обнаружил JmsConnector, поэтому я прошел через всю иерархию до JmsQueue / TopicFactory, но я не смог понять, как установить свойства для подключения к очереди Менеджер и все остальные объекты недвижимости, большое спасибо. Попробую и выложу результат - person MarceStarlet; 06.04.2015
comment
Большой! Опубликованный код взят из рабочей установки, поэтому вы должны запустить его. WMQ может быть немного придирчивым к безопасности, каналам и т. Д., Но я думаю, вы все это знаете. - person Petter Nordlander; 07.04.2015