4.7. 为 AMQP 消息配置大型消息处理


客户端可能会发送可超过代理内部缓冲大小的大型 AMQP 消息,从而导致意外错误。要防止这种情况,您可以将代理配置为在消息大于指定最小值时存储消息。以这种方式处理大量消息意味着代理不会在内存中保存消息。相反,代理会将消息存储在用于存储大型消息文件的专用目录中。

对于 OpenShift Container Platform 上的代理部署,大型消息目录为 /opt/<custom-resource-name>/data/large-messages,供代理用于消息存储。当代理将消息作为大消息存储时,队列会保留对大型消息目录中的 文件的引用。

重要
  • 要为 AMQP 消息配置大型消息处理,必须至少 将 Operator 的最新版本用于 AMQ Broker 7.7(版本 0.17)。要了解如何将 Operator 升级到 AMQ Broker 7.8 的最新版本,请参阅 第 6 章 升级基于 Operator 的代理部署
  • 对于 AMQ Broker 7.8 中的基于 Operator 的代理部署,只有 AMQP 协议可以使用大型消息处理。

4.7.1. 为大型消息处理配置 AMQP 接收器

以下步骤演示了如何配置接收器,以处理大于指定大小的 AMQP 消息作为大消息。

先决条件

步骤

  1. 打开之前定义 AMQP 接受者的自定义资源(CR)实例。

    1. 使用 OpenShift 命令行界面:

      $ oc edit -f <path/to/custom-resource-instance>.yaml
    2. 使用 OpenShift Container Platform Web 控制台:

      1. 在左侧导航菜单中点击 Administration Custom Resource Definitions
      2. 单击 ActiveMQArtemis CRD。
      3. 实例 选项卡。
      4. 查找与项目命名空间对应的 CR 实例。

    之前配置的 AMQP 接受器可能类似如下:

    spec:
    ...
      acceptors:
      - name: my-acceptor
        protocols: amqp
        port: 5672
        connectionsAllowed: 5
        expose: true
        sslEnabled: true
    ...
  2. 指定代理作为大型消息的 AMQP 消息最小大小(以字节为单位)。例如:

    spec:
    ...
      acceptors:
      - name: my-acceptor
        protocols: amqp
        port: 5672
        connectionsAllowed: 5
        expose: true
        sslEnabled: true
        amqpMinLargeMessageSize: 204800
        ...
    ...

    在前面的示例中,代理配置为接受端口 5672 上的 AMQP 消息。根据 amqpMinLargeMessageSize 的值,如果接受者收到大于或等于 204800 字节的 AMQP 消息(即 200 KB),代理将消息保存为大消息。

    代理将消息保存在用于消息存储的持久性卷(PV)上的大消息目录(/opt/<custom-resource-name>/data/large-messages )中。

    如果没有为 amqpMinLargeMessageSize 属性指定值,则代理使用默认值 102400(即 100 KB)。

    如果将mq pMinLargeMessageSize 设置为 -1,则禁用用于 AMQP 消息的大型消息处理。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.