ActiveMQ之高级特性桥接

将本地产生的消息转发到远程,通过远程服务器来处理消息,处理完成后,再启动消费者处理本地服务器消息(验证消息是否被转走,本地无消息可处理为正常)消息在下面的地址被消费,无需任何特别配置,采用默认的配置即可。

192.168.18.43:61616

生产消息地址为localhost:7001,需要做如下配置。

<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://192.168.18.43:61616" />
					</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>
注意:<constructor-arg value="messages.input"> 表示只有这个队列的会进行桥接转发。
因此在测试代码上需要注意改为Destination dest = session.createQueue("messages.input");
另外的测试方法:启动本地消息生产者,生产30条消息,但不做远程消息的处理,生产完成后直接启动消费者消费本地消息,发现本地没有可以消费的消息,然后再启动消费者处理远程消息,发现消息都被转发到了远程服务器。
还有一种测试方法:启动本地消息生产者,生产30条消息,同时启动本地消息消费者,发现15条消息被本地消费者处理,15条消息被转发到了远程服务器,说明远程服务器相当于一个本地消息的消费者。
更多的阅读参考 http://activemq.apache.org/jms-to-jms-bridge.html

你可能感兴趣的:(activemq)