4.13.2. 自动创建死信队列


常见用例是根据其原始地址隔离未传送的消息。例如,您可以选择将不传送的消息从名为 的文件地址路由到名为 DLA.stocks 的死 信队列,该队列关联死信队列 DLQ.stocks。同样,您可以将名为 order 的地址中的未传送消息路由 名为 DLA.orders 的死信地址。

借助这种路由模式,可以轻松跟踪、检查和管理未交付的消息。不过,这样的模式很难在主要使用自动创建地址和队列的环境中实施。这种类型的环境的系统管理员可能不希望进行额外的工作,手动创建地址和队列来保存未传送的消息。

作为解决方案,您可以将代理配置为自动创建组和队列以处理未交付的消息,如下方所示。

先决条件

流程

  1. 打开 <broker_instance_dir>/etc/broker.xml 配置文件。
  2. 找到您之前添加的 <address-setting> 元素,以定义匹配队列或一组队列的死信地址。例如:

    <configuration ...>
       <core ...>
          ...
          <address-settings>
             ...
             <address-setting match="exampleQueue">
                <dead-letter-address>DLA</dead-letter-address>
                <max-delivery-attempts>3</max-delivery-attempts>
             </address-setting>
          ...
          <address-settings>
    <configuration ...>
  3. <address-setting> 元素中,添加指示代理自动创建死信资源(即地址和队列)以及如何命名这些资源的配置项目。例如:

    <configuration ...>
       <core ...>
          ...
          <address-settings>
             ...
             <address-setting match="exampleQueue">
                <dead-letter-address>DLA</dead-letter-address>
                <max-delivery-attempts>3</max-delivery-attempts>
                <auto-create-dead-letter-resources>true</auto-create-dead-letter-resources>
                <dead-letter-queue-prefix>DLQ.</dead-letter-queue-prefix>
                <dead-letter-queue-suffix></dead-letter-queue-suffix>
             </address-setting>
          ...
          <address-settings>
    <configuration ...>
    auto-create-dead-letter-resources

    指定代理是否自动创建一个死信地址和队列来接收未传送的信息。默认值为 false

    如果 auto-create-dead-letter-resources 被设置为 true,代理会自动创建一个 <address> 元素来定义死信地址和关联的死信队列。自动创建的 <address> 元素的名称与您为 <dead-letter-address> 指定的名称值匹配。

    代理在自动创建的 <address> 元素中定义的 死信队列具有 多播 路由类型。默认情况下,代理会命名死信队列,以匹配未传送消息的原始地址,例如:cr ue

    代理还为使用 _AMQ_ORIG_ADDRESS 属性的死信队列定义过滤器。此过滤器确保死信队列仅接收发送到对应原始地址的消息。

    dead-letter-queue-prefix

    代理应用到自动创建的死信队列名称的前缀。默认值为 DLQ。

    当您定义前缀值或保留默认值时,死信队列的名称是前缀和原始地址的串联,如 DLQ.stocks

    dead-letter-queue-suffix
    代理应用到自动创建的死信队列的后缀。未定义默认值(即代理不应用后缀)。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.