spring xd dlq配置参数

时间:2015-11-12 18:16:52

标签: spring-xd

我已经设置了一个带有DLQ的spring xd流,我已经进行了循环配置  从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生成,理想情况下我不能在生产中篡改它。我可以设置一些属性来设置DLQ的上述属性吗? / p>

1 个答案:

答案 0 :(得分:2)

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

$ rabbitmqctl set_policy XDDLQTTL "xdbus\..*\.dlq" '{"dead-letter-exchange":"", "message-ttl":30000}' --apply-to 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标题。