1

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

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

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

我看到就在一个半月前,谷歌推出了用于 PubSub 的 DLQ:https ://cloud.google.com/pubsub/docs/dead-letter-topics

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

4

1 回答 1

3

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

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

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

于 2020-07-21T17:24:28.087 回答