Spring Cloud Stream通过配置延迟了Exchange的创建

时间:2019-03-04 15:28:55

标签: rabbitmq spring-cloud-stream

我有一个用例,其中消息必须经过一定的延迟才能重新处理,并且还想在重试之间引入指数补偿,因此文档中提到的ReRouteDlqApplication完全适合我的目的。

https://cloud.spring.io/spring-cloud-static/Finchley.SR1/multi/multi__rabbitmq_binder.html

我唯一需要的额外信息是,是否还可以通过application.properties配置delayExchange并将其与原始队列绑定,而不是通过Bean进行相同的操作,因此无需重复逻辑跨多个错误处理程序(即,每个DLQ一个错误处理程序)

请让我知道是否需要任何额外的信息。

编辑:

根据收到的评论,我删除了所有交换和队列,然后在本地重新尝试,但是仍然遇到以下错误 错误:“收到“ x延迟消息”,但当前为“主题””

我的属性文件:

spring.cloud.stream.bindings.packagingConsumerChannel.destination=fabric-exchange
spring.cloud.stream.bindings.packagingConsumerChannel.group=package-queue
spring.cloud.stream.bindings.packagingConsumerChannel.consumer.max-attempts=1
spring.cloud.stream.rabbit.bindings.packagingConsumerChannel.consumer.durableSubscription=true
spring.cloud.stream.rabbit.bindings.packagingConsumerChannel.consumer.bindingRoutingKey=package
spring.cloud.stream.rabbit.bindings.packagingConsumerChannel.consumer.autoBindDlq=true
spring.cloud.stream.rabbit.bindings.packagingConsumerChannel.consumer.dlqDeadLetterExchange=
spring.cloud.stream.rabbit.bindings.packagingConsumerChannel.consumer.delayedExchange=true

1 个答案:

答案 0 :(得分:0)

将使用者绑定属性delayedExchange设置为true

提交已添加到version 1.2中。

编辑

@SpringBootApplication
@EnableBinding(Sink.class)
public class So54986375Application {

    public static void main(String[] args) {
        SpringApplication.run(So54986375Application.class, args);
    }

    @StreamListener(Sink.INPUT)
    public void listen(String in) {

    }

}

spring.cloud.stream.rabbit.bindings.input.consumer.delayedExchange=true

enter image description here