Spring Cloud GCP PubSub DLQ(死信队列)使用 Spring 集成

Spring Cloud GCP PubSub DLQ (dead letter queue) using Spring Integration

我目前正在使用以下方法集成 PubSub https://docs.spring.io/spring-cloud-gcp/docs/1.2.4.BUILD-SNAPSHOT/reference/html/#spring-integration

基本上我订阅了一个主题,我收到消息并用它做一些事情。

如果我的业务规则出现任何错误情况(比如由于 X、Y、Z 原因不接受消息),我想将其发送到 dlq。

我看到就在一个半月前 Google 发布了 DLQ for PubSub:https://cloud.google.com/pubsub/docs/dead-letter-topics

但我不确定将它与 spring 集成方法集成的正确方法应该是什么。

内置的 DLQ 支持将自动运行——您只需打开 Dead Lettering(通过 Cloud Console 中的 add/edit 订阅屏幕),将“最大投递尝试次数”字段设置为尝试次数。在您的应用程序 nack() 发送消息此次数后,Cloud Pub/Sub 会将其重定向到您设置为 DLQ 的主题。

内置支持非常适合环境、可重试的邮件传递失败原因。但是,在将消息发送到 DLQ 之前,它至少要重试 5 次。在业务规则验证的情况下,您可能更喜欢使用自定义主题和 Spring 集成重定向来模拟 DLQ,因为在尝试 #1 失败后,消息不会突然变得有效,而其余的尝试 #2 - #5 是资源浪费。

为了模仿在一次故障后重定向的 DLQ,您将创建一个新主题,我们称之为 validation-dlq,将其连接为 Spring 集成通道,运行自定义验证检查每条消息,如果消息失败,ack() 源订阅上的原始消息,并将消息发布到 validation-dlq 主题。