我用DLQ设置了一个spring流,并进行了循环配置,以便从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的配置,从兔子mq管理UI中手动添加这个配置。
x-message-ttl: 30000
x-dead-letter-exchange: Default(Empty)在spring中有任何方法可以配置DLQ属性吗?因为DL队列将由xd在运行时生成,而且理想情况下我不能在production.Can中篡改它,所以我设置了一些属性来为DLQ设置上面的属性?
发布于 2015-11-12 21:02:32
不能通过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头。
https://stackoverflow.com/questions/33678482
复制相似问题