添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
搜索

第 27 章 配置 Jakarta 消息传递网桥

download PDF

JBoss EAP 消息传递包含 Jakarta 消息传递网桥,该网桥从源目的地获取消息,并将它们发送到目标目的地,通常是在不同服务器上。 Jakarta 消息传递网桥支持目标映射,其中每个链接都由以下定义的源和目标组成: 该源定义 Jakarta 消息传递网桥从中接收消息的目的地。源由连接工厂组成,用于创建与 Jakarta 消息传递提供程序的连接,以及该提供程序中的消息源目的地。 目标定义 Jakarta 消息传递网桥将消息从源发送到的目的地。目标由连接工厂组成,用于创建与 Jakarta 消息传递提供程序的连接,以及该提供程序中的消息目标目的地。 如果源目的地是一个主题,Jakarta Messaging 网桥会为其创建订阅。如果为 Jakarta Messaging 网桥配置了 client -id 和 subscription-name 属性,则订阅具有持久性。这意味着,如果 Jakarta 消息传递网桥停止然后重新启动,不会遗漏任何消息。 源和目标服务器不必位于同一集群中,这使得桥接适合从一个集群将消息可靠发送到另一个集群,例如跨 WAN 以及连接不可靠的地方。 不要将 Jakarta 消息传递网桥与核心网桥混淆。Jakarta 消息传递网桥可用于桥接任何与 Jakarta Messaging-1.1 兼容的提供程序,并使用 Jakarta Messaging API。 配置核心网桥 用于桥接任意两个 JBoss EAP 消息传递实例,并使用核心 API。在可能的情况下,使用核心网桥而不是 Jakarta 消息传递网桥。

JBoss EAP Jakarta Messaging 网桥配置示例

<subsystem xmlns="urn:jboss:domain:messaging-activemq:4.0">
  <server name="default">
  </server>
  <jms-bridge name="my-jms-bridge" module="org.apache.activemq.artemis" max-batch-time="100" max-batch-size="10" max-retries="1" failure-retry-interval="500" quality-of-service="AT_MOST_ONCE">
    <source destination="jms/queue/InQueue" connection-factory="ConnectionFactory">
      <source-context/>
    </source>
    <target destination="jms/queue/OutQueue" connection-factory="jms/RemoteConnectionFactory">
      <target-context>
        <property name="java.naming.factory.initial" value="org.wildfly.naming.client.WildFlyInitialContextFactory"/>
        <property name="java.naming.provider.url" value="http-remoting://192.168.40.1:8080"/>
      </target-context>
    </target>
  </jms-bridge>
</subsystem>
在上例配置中,Jakarta Messaging 网桥使用 connection-factory 属性来创建以下两个连接: source-context,用于定义收到的消息的原始目的地。 target-context,用于定义接收消息的目标目的地。 您可以使用 Apache ActiveMQ Artemis 或 Red Hat AMQ 提供的默认实施,通过使用 Java 命名和目录接口(JNDI)搜索连接工厂。对于其他应用服务器或 Jakarta 消息传递提供程序,您可以通过实施接口 org.apache.activemq.artemis.jms.bridge.ConnectionFactoryFactory 来提供新的实施。

使用管理 CLI 添加 Jakarta 消息传递网桥

可以使用以下管理 CLI 命令来添加 Jakarta 消息传递网桥:请注意,源和目标目的地必须在配置中定义。有关可配置属性的完整列表,请参见 附录中的表

/subsystem=messaging-activemq/jms-bridge=my-jms-bridge:add(quality-of-service=AT_MOST_ONCE,module=org.apache.activemq.artemis,failure-retry-interval=500,max-retries=1,max-batch-size=10,max-batch-time=100,source-connection-factory=ConnectionFactory,source-destination=jms/queue/InQueue,source-context={},target-connection-factory=jms/RemoteConnectionFactory,target-destination=jms/queue/OutQueue,target-context={java.naming.factory.initial=org.wildfly.naming.client.WildFlyInitialContextFactory,java.naming.provider.url=http-remoting://192.168.40.1:8080})

您可以在管理 CLI 中使用 read-resource 命令检查 Jakarta Messaging 网桥的配置,如下例所示。

/subsystem=messaging-activemq/jms-bridge=my-jms-bridge:read-resource

使用 write-attribute 将配置添加到 Jakarta 消息传递网桥,如本例中所示:

/subsystem=messaging-activemq/jms-bridge=my-jms-bridge:write-attribute(name=ATTRIBUTE,value=VALUE)

使用管理控制台添加 Jakarta 消息传递网桥

您还可以按照下列步骤使用管理控制台添加 Jakarta 消息传递网桥。 在浏览器中打开管理控制台,再导航到 Configuration Subsystems Messaging(ActiveMQ) JMS Bridge 。 单击添加( + )按钮,然后在出现提示时提供所需的信息。 完成后,单击 Add

27.1. 服务质量

在 JBoss EAP 中,服务质量是一种 可配置的属性,决定了消息的使用和确认方式。 服务质量及其 描述的有效值如下所示。有关 Jakarta Messaging 网桥属性的完整列表,请参见 附录中的表

AT_MOST_ONCE

消息将在最多一次从来源到达目的地。消息从来源使用,并在发送到目的地之前确认。因此,如果在从源中删除消息到到达目的地之间发生故障,可能会丢失消息。这个模式是默认值。 此模式适用于持久和非持久消息。

DUPLICATES_OK

消息从源使用,然后在成功发送到目的地后进行确认。因此,如果在发送初始消息之后但在确认之前发生错误,则有可能再次发送消息。 此模式适用于持久和非持久消息。

ONCE_AND_ONLY_ONCE

消息将从源一次且仅一次到达目的地。如果源和目标在同一服务器实例上,可以通过发送和确认同一本地事务中的消息来实现。如果来源和目标位于不同的服务器上,则可通过在 Jakarta Transactions 发起发送和消费会话来实现。事务由交易管理器控制,需要使用网桥上的 setTransactionManager() 方法设置。 此模式仅适用于持久消息。