16.2. 配置代理连接


以下流程演示了如何配置代理连接以在代理间镜像信息。任何时候只有一个代理处于活跃状态,所有信息都会镜像到另一个代理。

先决条件

  • 您有两个工作代理。

流程

  1. broker.xml 文件中为第一个代理创建一个 broker-connections 元素,例如:

    <broker-connections>
      <amqp-connection uri="tcp://<hostname>:<port>" name="DC1">
        <mirror/>
      </amqp-connection>
    </broker-connections>
    <hostname>
    其他代理实例的主机名。
    <port>
    其他主机上代理使用的端口。

    第一个代理上的所有消息都会镜像到第二个代理,但创建镜像前存在的消息不会被镜像(mirror)。

  2. 如果您希望第一个代理同步镜像消息,以确保镜像代理在灾难恢复时处于最新状态,请在代理的 amqp-connection 元素中设置 sync=true 属性,如下例所示。

    同步镜像要求代理发送到镜像代理的消息同时写入两个代理的卷。两个代理上完成写入操作后,源代理确认写入请求已完成,并返回给客户端。

    <broker-connections>
      <amqp-connection uri="tcp://<hostname>:<port>" name="DC2">
        <mirror sync="true"/>
      </amqp-connection>
    </broker-connections>
    注意

    如果无法在镜像代理上完成写入请求,例如,如果代理不可用,则客户端连接会被阻断,直到镜像可用来完成最新的写入请求。

    您还可以配置以下额外功能:

    • queue-removal :指定是否发送 queue- 或 address-removal 事件。默认值为 true
    • Message-acknowgments :指定是否发送消息确认。默认值为 true
    • queue-creation :指定是否发送队列或地址创建事件。默认值为 true
    注意

    示例中的代理连接名称 DC1 用于创建名为 $ACTIVEMQ_ARTEMIS_MIRROR_mirror 的队列。确保对应的代理配置为接受这些消息,即使队列在该代理上不可见。

  3. broker.xml 文件中为第二个代理创建一个 broker-connections 元素,例如:

    <broker-connections>
      <amqp-connection uri="tcp://<hostname>:<port>" name="DC2">
        <mirror/>
      </amqp-connection>
    </broker-connections>
  4. 如果您希望第二个代理同步镜像消息,请在代理的 amqp-connection 元素中设置 sync=true 属性。例如:

    <broker-connections>
      <amqp-connection uri="tcp://<hostname>:<port>" name="DC2">
        <mirror sync="true"/>
      </amqp-connection>
    </broker-connections>
  5. 使用 第 15.6 节 “在多站点、容错消息传递系统中配置客户端” 中记录的说明配置客户端,请注意,使用代理连接,没有共享存储。
重要

红帽不支持在镜像配置中使用来自这两个代理的客户端应用程序。要防止客户端在这两个代理上消耗消息,请在其中一个代理中禁用客户端 acceptors。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.