spring xd dlq 配置参数

spring xd dlq configuration parameters

我已经用 DLQ 设置了一个 spring xd 流并且我已经进行了循环配置 return 从 DLQ 到主队列。

 xdbus.s3Test.0-->DLQ-->xdbus.s3Test.0 

stream create s3Test --definition "aws-s3-source | log" 

stream deploy S3test --properties module.*.consumer.autoBindDLQ=true

为了让它成为一个圆圈,我不得不更改 DLQ 的配置,从 rabbit mq ADMIN 手动添加这个 UI。

x-message-ttl:  30000
x-dead-letter-exchange: Default(Empty)

在 spring xd 中有什么方法可以配置 DLQ 属性吗?因为 DL 队列将在 运行 时间由 XD 生成,理想情况下我不能在 production.Can i 中篡改它set some properties 为DLQ设置以上属性?

您无法通过 XD 设置 DLQ 属性,但您可以在 RabbitMQ 中创建适用于 XD 创建的 DLQ 的策略:

$ rabbitmqctl set_policy XDDLQTTL "xdbus\..*\.dlq" '{"dead-letter-exchange":"", "message-ttl":30000}' --apply-to queues

这会将您所需的属性应用于所有 queues,以 xdbus. 开头并以 .dlq 结尾。

我刚用这个测试过,效果很好...

xd:>stream create ticktock --definition "time --fixedDelay=60 | transform --expression=1/0 | log"
Created new stream 'ticktock'
xd:>stream deploy ticktock --properties module.*.consumer.autoBindDLQ=true
Deployed stream 'ticktock'

您可以看到消息循环(因为被零除)。

一个警告 - 这将永远尝试;如果您希望在重试一定次数后中止,您需要模块中的一些代码来查看 x-death header。