如何将死信消息路由回原始主题?

Posted

技术标签:

【中文标题】如何将死信消息路由回原始主题?【英文标题】:How to route dead letter messages back to the original topic? 【发布时间】:2020-08-22 07:04:12 【问题描述】:

我有一个使用死信主题的 Google Cloud Pub/Sub 订阅。我最近发生了一次中断,导致许多消息无法处理,它们最终进入了死信主题。

中断已解决,我想将死信订阅的内容轻松发送回原始订阅。它们都还在队列中(我没有消耗死信子),所以我只需要将它们路由到某个地方。

这是一项管理任务,因此我希望手动启动它,如果这有什么不同的话。理想情况下是通过 UI,但我在那里看不到任何东西。

【问题讨论】:

您如何处理您的消息?您可以从死信主题手动启动一个新的批处理作业消耗消息。 您是否为您的死信主题创建了拉取订阅?另外,你重新处理已经处理过的消息是否有问题? 您的问题解决了吗? 未配置拉取订阅,消息留在队列中等待手动检查,无需确认。 【参考方案1】:

你有几个选择:

使用数据流pipeline 将消息从死信主题移动到您的主题。 更新现有管道以根据配置从原始主题和死信主题中读取 创建一个新系统,启用后,将消息从一个主题移动到另一个主题。

正确的答案可能取决于您的系统设计和要求。

如果您的死信主题用例总是包括在延迟后将消息移回主主题,您可能希望在 Cloud Pub/Sub 中使用 configurable exponential backoff。此功能将于 2020 年第二季度末全面推出。

【讨论】:

有趣 - 我喜欢 RetryPolicy,一旦 GA 可以通过 UI 进行配置吗?在这种情况下,由于一个持续了约数小时的问题,消息未送达,因此它们被分流到 DLQ。如果我可以临时定义和运行它们,我认为您的第一个选择是最好的。感谢您的直接链接。 重试策略将在 GA 后通过 UI 进行配置。 您现在可以在 Cloud Pub/Sub 订阅中配置重试策略。重试策略允许用户在失败的情况下对每条消息进行指数退避。更多信息可以在here找到。 在我看来,通过将死信订阅的死信主题设置为主要话题。唯一目的是从死信订阅中接收消息的应用程序将始终运行。这将是一个无限循环,但死信订阅的重试策略的长时间延迟将意味着在很长一段时间后,消息最终会回到主订阅中进行重新处理。

以上是关于如何将死信消息路由回原始主题?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Java 将错误消息移动到 Azure 死信队列(主题 - 订阅)?

PubSub 最大传递尝试次数和死信主题

gcp 云函数 pub/sub 主题死信

RabbitMQ 中的死信死信消息

为啥 PubSub 订阅在保留期到期后向死信主题发布消息

Google Cloud Functions 无法使用 Pub/Sub 死信主题