跳到主要内容

配置死消息队列

您可以创建一个死消息队列(DMQ),用于接收因无法传递给订阅客户端而从一个或多个队列或主题端点丢弃的消息。默认情况下,消息会在以下情况下从端点丢弃:

  • 消息的最大生存时间(TTL)值已达到,且端点配置为尊重消息 TTL 过期时间.
  • 消息对消费者的重新传递尝试次数已达到原始端点的最大重新传递次数值.

除非配置了 DMQ 以接收队列或主题端点丢弃的消息,并且消息被发布者标记为 DMQ 合格,否则丢弃的消息将被删除.

Solace 建议为每个需要 DMQ 的队列和主题端点使用单独的 DMQ。单独的 DMQ 使得从多个队列管理死消息更容易,并且使调查 DMQ 消息更容易.

有关 DMQ 的更多信息,请参阅死消息队列.

DMQ的注意事项

要将消息移动到 DMQ 而不是丢弃,必须满足以下所有条件:

  • DMQ 必须存在于相同的消息 VPN 上。您必须使用原始端点中指定的名称创建 DMQ。如果 DMQ 不存在,则即使消息是 DMQ 合格的,丢弃的消息也会被删除.

  • 要根据 TTL 丢弃消息,队列必须尊重 TTL 值.如果队列不尊重 TTL,则消息不会过期,也不会从队列中丢弃.您可以在队列上配置最大 TTL 值,该值从消息到达队列时开始.发布客户端也可以为消息设置 TTL,该值从消息发布时开始.如果队列尊重 TTL 值,则消息在最早到达的 TTL 时被丢弃.

  • 要根据达到对消费者的最大重新传递次数来丢弃消息,必须配置最大重新传递次数.有关更多信息,请参阅配置高级队列选项.

  • 发布客户端必须将消息指定为 DMQ 合格.对于开发人员信息:

    • 在 Solace 消息 API 上,请参阅死消息队列资格.
    • 在 Solace REST 消息传递上,请参阅 Solace 特定的 HTTP 标头.
    • 在 JMS API 上,请参阅死消息队列资格.
    • 对于 AMQP 1.0,每条消息都是 DMQ 合格的.

配置DMQ

配置 DMQ 包括两个任务:

  • 创建一个或多个队列,作为相同消息 VPN 上其他队列和主题端点的 DMQ。Solace 建议为每个需要 DMQ 的队列和主题端点创建一个单独的 DMQ,并将 DMQ 命名为 <endpoint-name>_dmq。有关更多信息,请参阅创建队列.

  • 配置另一个端点的设置,以丢弃未传递的消息并将消息发送到指定的 DMQ。有关更多信息,请参阅将消息发送到 DMQ.

要启用将丢弃的消息发送到 DMQ 的端点设置取决于丢弃消息的原因:

  • 必须选择尊重 TTL 才能根据最大 TTL 值将消息发送到 DMQ.

  • 可以为队列或主题端点设置最大 TTL 值,也可以由消息发布者设置,或者两者都设置:

    • 如果您希望在消息未传递指定时间段后从队列或主题端点中移除所有消息,请为端点设置最大 TTL.

    • 如果您只想尊重消息发布者设置的 TTL 值,以便消息过期,则无需为端点设置最大 TTL.

    • 如果消息同时具有发布者设置的 TTL 和端点设置的最大 TTL,则当最早到达的 TTL 到达时,消息将从端点中移除.例如,如果消息在发布后有 90 秒的 TTL,而队列在消息到达队列后有 60 秒的 TTL,则消息在第一个 TTL 过期时被发送到 DMQ.

  • 如果您希望在指定次数的重新传递尝试后将消息从端点中移除,请为端点设置最大重新传递次数.

将消息发送到DMQ

有关队列中的消息传递设置的更多信息,请参阅配置高级队列选项.

要配置端点以在事件代理管理器中将消息发送到 DMQ,请执行以下步骤:

  1. 打开事件代理管理器.有关说明,请参阅 PubSub+ 事件代理管理器.
  2. 选择一个消息 VPN.
  3. 在左侧导航栏中选择 队列.
  4. 选择 队列主题端点 选项卡.
  5. 选择您要为其配置 DMQ 的端点.如果它还不存在,请参阅配置队列或配置主题端点.
  6. 点击 编辑img.
  7. 点击 显示高级设置.
  8. DMQ 名称 字段中,输入您消息 VPN 上另一个队列的名称.默认名称为 #DEAD_MSG_QUEUE,但 Solace 建议为每个需要 DMQ 的端点使用单独的 DMQ,并将 DMQ 命名为 <endpoint-name>_dmq,例如:MyQueue_dmq.如果您使用默认名称,或输入一个不存在的队列名称,则必须创建它.
  9. 消息过期 部分,点击 尊重 TTLimg 切换按钮以启用它.
  10. (可选)在 最大 TTL(秒) 字段中设置一个值.最大 TTL 的值为 0 表示端点不施加最大 TTL 但尊重发布者设置的 TTL.
  11. (可选)要设置在消息发送到 DMQ 之前重新传递尝试次数的限制,请点击 永远尝试img 切换按钮以禁用它,然后设置 最大重新传递次数 值和您需要的任何其他重新传递选项.有关更多信息,请参阅配置高级队列选项.
  12. 点击 应用.

在事件代理管理器中为您的队列配置 DMQ 后,当最大 TTL 值或最大重新传递次数被超过时,符合 DMQ 资格的消息将被发送到配置的 DMQ. DMQ 中的消息保留其原始标头,包括它们最初绑定的端点,因此您可以在必要时调查它们.