20.6.6. 配置 JMS 桥

HornetQ 包含一个具有完整功能的 JMS 消息桥。这个桥的功能是从源队列或主题消费消息,并发送消息到通常位于不同服务器上的目标队列或主题。
源和目标服务器不需要位于相同的群集,对于跨 WAN 的、连接不稳定的实例,这使得桥适合于从一个群集可靠地发送消息至另外一个群集。
桥也可以部署为 HornetQ 独立服务器上的独立应用程序,或者位于 JBoss AS 实例内部。源和目标服务器既可以位于相同的、也可以位于不同的虚拟机里。

例 20.4. JMS 桥的配置示例:

这个例子里的值适用于本节的剩余内容。
<subsystem>
  <subsystem xmlns="urn:jboss:domain:messaging:1.3">
             <hornetq-server>
             ...
             </hornetq-server>

             <jms-bridge name="myBridge">
                <source>
                    <connection-factory name="ConnectionFactory"/>
                    <destination name="jms/queue/InQueue"/>
                </source>
                <target>
                    <connection-factory name="jms/RemoteConnectionFactory"/>
                    <destination name="jms/queue/OutQueue"/>
                    <context>
                        <property key="java.naming.factory.initial" value="org.jboss.naming.remote.client.InitialContextFactory"/>
                        <property key="java.naming.provider.url" value="remote://192.168.40.1:4447"/>
                    </context>
                </target>
                <quality-of-service>AT_MOST_ONCE</quality-of-service>
                <failure-retry-interval>1000</failure-retry-interval>
                <max-retries>-1</max-retries>
                <max-batch-size>10</max-batch-size>
                <max-batch-time>100</max-batch-time>
                <add-messageID-in-header>true</add-messageID-in-header>
            </jms-bridge>
...
</subsystem>

表 20.9. HornetQ Core JMS 属性

属性 描述
name
服务器上所有的桥都必须有一个唯一名称。
source connection-factory
它注入 SourceCFF bean(也定义在 Bean 文件里)。这个 bean 创建源 ConnectionFactory。
source destination name
它注入 SourceDestinationFactory bean(也定义在 Bean 文件里)。这个 bean 创建源 Destination。
target connection-factory
它注入 TargetCFF bean(也定义在 Bean 文件里)。这个 bean 创建目标 ConnectionFactory。
target destination name
它注入 TargetDestinationFactory bean(也定义在 Bean 文件里)。这个 bean 创建目标 Destination。
quality-of-service
这个参数代表服务模式要求的品质。可能的值包括 AT_MOST_ONCE、DUPLICATES_OK、ONCE_AND_ONLY_ONCE。
failure-retry-interval
它表示当桥检测到与源或目标服务器的连接已失败时重新创建连接前等待的时间(毫秒)。
max-retries
它表示当桥检测到与源或目标服务器的连接已失败时重新创建连接的次数。桥在尝试这个次数后会放弃。-1 表示“无限次尝试”。
max-batch-size
它表示在以批次将消息发送到目标目的地之前从源目的地消费的消息的最大数目。它的值必须大于 1。
max-batch-time
它表示在发送批次消息到目标目的地之前等待的时间(毫秒),即使已消费的消息数量还没有到达 MaxBatchSize。它的值为 -1 表示“一直等待”,大于 1 则指定实际的时间。
add-messageID-in-header
如果为 true,原始消息的 ID 将附加在发送到目的地的消息头部 HORNETQ_BRIDGE_MSG_ID_LIST。如果消息被多次桥接,每个消息 ID 都会被附加。这启用了要使用的分布式请求-响应模式。
当您接收消息时,您可以用第一个消息 ID 的 correlation id 发送响应,所以当原始发送者接收到这个消息时,它就容易进行关联。
关于更完整的说明,请参考 第 20.9.2 节 “创建 JMS 桥”