| <div class="wiki-content maincontent"><h3 id="JMStoJMSBridge-Introduction">Introduction</h3><div class="confluence-information-macro confluence-information-macro-warning"><p class="title">Warning, try Camel first!</p><span class="aui-icon aui-icon-small aui-iconfont-error confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>Note that we recommend you look at using <a shape="rect" class="external-link" href="http://camel.apache.org/">Apache Camel</a> for bridging ActiveMQ to or from any message broker (or indeed <a shape="rect" class="external-link" href="http://camel.apache.org/components.html">any other technology, protocol or middleware</a>) as its much easier to:</p><ul><li>keep things flexible; its very easy to map different queue/topic to one or more queues or topics on the other provider</li><li>perform content based routing, filtering and other <a shape="rect" class="external-link" href="http://camel.apache.org/enterprise-integration-patterns.html">Enterprise Integration Patterns</a></li><li>allows you to work with <a shape="rect" class="external-link" href="http://camel.apache.org/components.html">any technology, protocol or middleware</a>, not just JMS providers</li></ul><p>e.g. in your Spring XML file just add:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> |
| <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[<camelContext xmlns="http://camel.apache.org/schema/spring"> |
| <route> |
| <from uri="mqseries:Foo.Bar"/> |
| <to uri="activemq:Cheese"/> |
| </route> |
| </camelContext> |
| ]]></script> |
| </div></div></div></div><p>ActiveMQ provides bridging functionality to other JMS providers that implement the JMS 1.0.2 and above specification.<br clear="none"> A JMS bridge can be co-located with an ActiveMQ broker or run remotely.<br clear="none"> In order to support JMS 1.0.2 there is seperation between Queues and Topics.</p><p>temporary destinations and replyTo destinations in the inbound message exchanges are automatically handled, enabling an ActiveMQ service to handle a foreign JMS TopicRequestor or QueueResquestor exchanges.</p><h3 id="JMStoJMSBridge-properties">properties</h3><p><strong>JMS Bridge Topic Connector</strong></p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>property name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>default value</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>localTopicConnection</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>if set will be used to connect to ActiveMQ</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>localTopicConnectionFactory</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>used to initialize the ActiveMQ JMS Connection if localTopicConnection is not set</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>localClientId</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>set the id of the local connection</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>outboundClientId</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>set the id of the outbound connection</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>jndiLocalTemplate</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Spring default template</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>used for locating the Connection Factory for the ActiveMQ Connection if the localTopicConnection or localTopicConnectionFactory is not set</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>outboundTopicConnection</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>if set will be used to connect to the foreign JMS provider</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>outboundTopicConnectionFactory</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>used to initialize the foreign JMS Connection if outboundTopicConnection is not set</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>jndiOutboundTemplate</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Spring default template</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>used for locating the Connection Factory for the ActiveMQ Connection if the localTopicConnection or localTopicConnectionFactory is not set</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>localUsername</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>if set will be used for authentication to the ActiveMQ JMS provider</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>localPassword</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>if set will be used for authentication to the ActiveMQ JMS provider</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>outboundUsername</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>if set will be used for authentication to the foreign JMS provider</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>outboundPassword</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>if set will be used for authentication to the foreign JMS provider</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>inboundMessageConvertor</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>if set will be used for converting foreign JMS Messages to a format for ActiveMQ</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>outboundMessageConvertor</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>if set will be used for converting ActiveMQ messages to a format for the foriegn JMS provider</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>inboundTopicBridges</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>an array of InboundTopicBridge instances - used for defining inbound (subscribe to) traffic from the foreign JMS provider</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>outboundTopicBridges</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>an array of OutboundTopicBridge instances - used for defining destinations that will be published to the foreign JMS provider</p></td></tr></tbody></table></div><p><strong>JMS Bridge Queue Connector</strong></p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>property name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>default value</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>localQueueConnection</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>if set will be used to connect to ActiveMQ</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>localQueueConnectionFactory</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>used to initialize the ActiveMQ JMS Connection if localQueueConnection is not set</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>localClientId</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>set the id of the local connection</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>outboundClientId</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>set the id of the outbound connection</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>jndiLocalTemplate</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Spring default template</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>used for locating the Connection Factory for the ActiveMQ Connection if the localQueueConnection or localQueueConnectionFactory is not set</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>outboundQueueConnection</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>if set will be used to connect to the foreign JMS provider</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>outboundQueueConnectionFactory</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>used to initialize the foreign JMS Connection if localQueueConnection is not set</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>jndiOutboundTemplate</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Spring default template</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>used for locating the Connection Factory for the ActiveMQ Connection if the localQueueConnection or localQueueConnectionFactory is not set</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>localUsername</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>if set will be used for authentication to the ActiveMQ JMS provider</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>localPassword</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>if set will be used for authentication to the ActiveMQ JMS provider</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>outboundUsername</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>if set will be used for authentication to the foreign JMS provider</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>outboundPassword</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>if set will be used for authentication to the foreign JMS provider</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>inboundMessageConvertor</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>if set will be used for converting foreign JMS Messages to a format for ActiveMQ</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>outboundMessageConvertor</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>if set will be used for converting ActiveMQ messages to a format for the foriegn JMS provider</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>inboundQueueBridges</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>an array of InboundQueueBridge instances - used for defining inbound (subscribe to) traffic from the foreign JMS provider</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>outboundQueueBridges</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>an array of OutboundQueueBridge instances - used for defining destinations that will be forwarded to the foreign JMS provider</p></td></tr></tbody></table></div><div class="sectionColumnWrapper"><div class="sectionMacroWithBorder"><div class="sectionMacroRow"><div class="columnMacro" style="width:50%;min-width:50%;max-width:50%;"><h4 id="JMStoJMSBridge-TopicBridges">Topic Bridges</h4><p><strong>InboundTopicBridge</strong></p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>property name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>default value</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>localTopicName</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>the name of the local ActiveMQ Queue</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>inboundTopicName</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>the foreign topic name to subscribe to</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>selector</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>selector to use - if any</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>consumerName</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>if set will create a durable consumer</p></td></tr></tbody></table></div><p><strong>OutboundTopicBridge</strong></p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>property name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>default value</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>localTopicName</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>the name of the local ActiveMQ Queue</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>outboundTopicName</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>the foreign topic name to publish to</p></td></tr></tbody></table></div></div><div class="columnMacro" style="width:50%;min-width:50%;max-width:50%;"><h4 id="JMStoJMSBridge-QueueBridges">Queue Bridges</h4><p><strong>InboundQueueBridge</strong></p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>property name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>default value</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>localQueueName</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>the name of the local ActiveMQ Queue</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>inboundQueueName</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>the foreign queue name to receive from</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>selector</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>selector to use - if any</p></td></tr></tbody></table></div><p><br clear="none" class="atl-forced-newline"> <strong>OutboundQueueBridge</strong></p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>property name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>default value</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>localQueueName</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>the name of the local ActiveMQ Queue</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>outboundQueueName</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>the foreign queue name to send to</p></td></tr></tbody></table></div></div></div></div></div><h3 id="JMStoJMSBridge-ExampleXBeanConfiguration">Example XBean Configuration</h3><p>The following <a shape="rect" class="external-link" href="http://svn.apache.org/repos/asf/activemq/trunk/activemq-unit-tests/src/test/resources/org/apache/activemq/network/jms/queue-xbean.xml">example config file</a> shows how to use the regular <a shape="rect" href="xml-configuration.xml">Xml Configuration</a> to configure a JMS to JMS bridge.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> |
| <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ <broker xmlns="http://activemq.apache.org/schema/core" id="localbroker" |
| brokerName="localBroker" persistent="false"> |
| <jmsBridgeConnectors> |
| <jmsQueueConnector |
| outboundQueueConnectionFactory="#remoteFactory"> |
| <inboundQueueBridges> |
| <inboundQueueBridge |
| inboundQueueName="org.apache.activemq.network.jms.QueueBridgeXBeanTest" /> |
| </inboundQueueBridges> |
| </jmsQueueConnector> |
| </jmsBridgeConnectors> |
| <transportConnectors> |
| <transportConnector uri="tcp://localhost:61234" /> |
| </transportConnectors> |
| </broker> |
| <!-- JMS ConnectionFactory to use remote --> |
| <bean id="remoteFactory" |
| class="org.apache.activemq.ActiveMQConnectionFactory"> |
| <property name="brokerURL" value="tcp://localhost:61666" /> |
| </bean> |
| ]]></script> |
| </div></div><h3 id="JMStoJMSBridge-ExamplepureSpringConfiguration">Example pure Spring Configuration</h3><p>The following example shows how to use raw Spring XML to wire together a broker - bridging to a Foreign JMS provider</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> |
| <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[<!-- local broker with embedded Jms to Jms bridge (ok - it's contrived) --> |
| <bean id="localbroker" class="org.apache.activemq.broker.BrokerService" |
| init-method="start"> |
| <property name="brokerName" value = "localBroker"/> |
| <property name="persistent" value = "false"/> |
| <property name="transportConnectorURIs"> |
| <list> |
| <value>tcp://localhost:61234</value> |
| </list> |
| </property> |
| <property name="jmsBridgeConnectors"> |
| <list> |
| <ref bean="jmsConnector"/> |
| </list> |
| </property> |
| </bean> |
| |
| <!-- JMS ConnectionFactory to use local broker (the one with the bridge) --> |
| <bean id="localFactory" |
| class="org.apache.activemq.ActiveMQConnectionFactory"> |
| <property name="brokerURL" value="tcp://localhost:61234" /> |
| </bean> |
| |
| <!--JmsTopicConnector - the Jms bridge --> |
| <bean id="jmsConnector" |
| class="org.apache.activemq.network.jms.JmsTopicConnector"> |
| <property name = "outboundTopicConnectionFactory" ref = "remoteFactory"/> |
| |
| <property name = "inboundTopicBridges"> |
| <list> |
| <ref bean="InboundTopicBridge" /> |
| </list> |
| </property> |
| |
| </bean> |
| |
| <bean id ="InboundTopicBridge" class="org.apache.activemq.network.jms.InboundTopicBridge"> |
| <property name = "inboundTopicName" value = "org.apache.activemq.network.jms.TopicBridgeSpringTest"/> |
| </bean> |
| </beans> |
| ]]></script> |
| </div></div><h3 id="JMStoJMSBridge-ExampleXBeanConfigurationtoBridgeActiveMQtoProviderWithNoURLSetter">Example XBean Configuration to Bridge ActiveMQ to Provider With No URL Setter</h3><p>Some JMS providers, WebLogic for instance, do not expose a setter for connection properties like host and port (setBrokerUrl) on their ConnectionFactory object. In this case you need to set outboundQueueConnectionFactoryName and jndiOutboundTemplate in your activemq.xml config file.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> |
| <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[<!-- START SNIPPET: example --> |
| <beans> |
| |
| <!-- Allows us to use system properties as variables in this configuration file --> |
| <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/> |
| |
| <broker useJmx="true" xmlns="http://activemq.org/config/1.0"> |
| |
| <persistenceAdapter> |
| <journaledJDBC journalLogFiles="5" dataDirectory="${activemq.home}/activemq-data"/> |
| </persistenceAdapter> |
| |
| <transportConnectors> |
| <transportConnector name="default" uri="tcp://localhost:61616" discoveryUri="multicast://default"/> |
| <transportConnector name="stomp" uri="stomp://localhost:61613"/> |
| </transportConnectors> |
| |
| <networkConnectors> |
| <networkConnector name="default" uri="multicast://default"/> |
| </networkConnectors> |
| |
| <jmsBridgeConnectors> |
| <jmsQueueConnector name="JreportRequestBridge-Inbound" |
| jndiOutboundTemplate="#remoteJndi" |
| outboundQueueConnectionFactoryName="jms/ConnectionFactory" |
| localQueueConnectionFactory="#localFactory"> |
| <inboundQueueBridges> |
| <inboundQueueBridge inboundQueueName="jms/queue/jreport/request"/> |
| </inboundQueueBridges> |
| </jmsQueueConnector> |
| </jmsBridgeConnectors> |
| |
| </broker> |
| |
| <!-- Set up the template for connecting to Weblogic --> |
| <bean id="remoteJndi" class="org.springframework.jndi.JndiTemplate"> |
| <property name="environment"> |
| <props> |
| <prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop> |
| <prop key="java.naming.provider.url">t3://<your ip here>:7001</prop> |
| </props> |
| </property> |
| </bean> |
| |
| <bean id="localFactory" |
| class="org.apache.activemq.ActiveMQConnectionFactory"> |
| <property name="brokerURL" value="tcp://localhost:61616" /> |
| </bean> |
| |
| <bean id="localQueue" class="org.apache.activemq.command.ActiveMQQueue"> |
| <constructor-arg value="dynamic/jms.queue.jreport.request"/> |
| </bean> |
| </beans> |
| <!-- END SNIPPET: xbean --> |
| ]]></script> |
| </div></div><h3 id="JMStoJMSBridge-ExamplepureSpringConfigurationforsendingmessagestoexternalActiveMQdestinationthroughbridge">Example pure Spring Configuration for sending messages to external ActiveMQ destination through bridge</h3><p>Spring beans:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> |
| <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[<?xml version="1.0" encoding="UTF-8"?> |
| <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> |
| |
| <beans> |
| |
| <bean id="mainBroker" class="org.apache.activemq.broker.BrokerService" init-method="start" destroy-method="stop"> |
| <property name="brokerName" value = "mainBroker"/> |
| <property name="persistent" value="false"/> |
| <property name="transportConnectorURIs"> |
| <list> |
| <value>tcp://localhost:7000</value> |
| </list> |
| </property> |
| </bean> |
| |
| <bean id="bridgedBroker" class="org.apache.activemq.broker.BrokerService" init-method="start" destroy-method="stop"> |
| <property name="brokerName" value = "bridgedBroker"/> |
| <property name="persistent" value="false"/> |
| <property name="transportConnectorURIs"> |
| <list> |
| <value>tcp://localhost:7001</value> |
| </list> |
| </property> |
| <property name="jmsBridgeConnectors"> |
| <list> |
| <bean class="org.apache.activemq.network.jms.JmsQueueConnector"> |
| <property name="outboundQueueConnectionFactory"> |
| <bean class="org.apache.activemq.ActiveMQConnectionFactory"> |
| <property name="brokerURL" value="tcp://localhost:7000" /> |
| </bean> |
| </property> |
| <property name="outboundQueueBridges"> |
| <list> |
| <bean class="org.apache.activemq.network.jms.OutboundQueueBridge"> |
| <constructor-arg value="messages.input"/> |
| </bean> |
| </list> |
| </property> |
| </bean> |
| </list> |
| </property> |
| </bean> |
| |
| </beans> |
| ]]></script> |
| </div></div><p>Java code:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> |
| <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[public class BridgeTest { |
| |
| public BridgeTest() throws Exception { |
| |
| Log log = LogFactory.getLog(getClass()); |
| |
| new ClassPathXmlApplicationContext("bridge/context-bridge.xml"); |
| |
| ActiveMQConnection connection = ActiveMQConnection.makeConnection("tcp://localhost:7001"); |
| connection.start(); |
| Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); |
| Destination destination = session.createQueue("messages.input"); |
| MessageProducer producer = session.createProducer(destination); |
| producer.send(session.createTextMessage("Test Message")); |
| log.debug("send message"); |
| session.close(); |
| connection.close(); |
| |
| connection = ActiveMQConnection.makeConnection("tcp://localhost:7000"); |
| connection.start(); |
| session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); |
| destination = session.createQueue("messages.input"); |
| MessageConsumer consumer = session.createConsumer(destination); |
| log.debug("receive message"); |
| Message message = consumer.receive(5000); |
| log.debug("Received: " + message); |
| session.close(); |
| connection.close(); |
| } |
| |
| public static void main(String[] args) throws Exception { |
| new BridgeTest(); |
| } |
| |
| } |
| ]]></script> |
| </div></div></div> |
| |