我想创建从rabbitMQ plugin延迟交换。SpringCloudStream - 如何创建延迟交换?
起初,我试图用簧粘合剂,因为我可以看到,delayed-exchange
标志可用:
spring:
cloud:
stream:
bindings:
delayed-ex:
group: update-delayed
contentType: application/json
consumer:
max-attempts: 1
rabbit:
bindings:
delayed-ex:
consumer:
transacted: true
auto-bind-dlq: true
republish-to-dlq: true
delayed-exchange: true
requeue-rejected: false
不幸的是,这个配置是创造我不带任何标志简单topic
交流。
我可以创造豆:
@Bean
public CustomExchange delayedExchange() {
final Map<String, Object> args = new HashMap<>();
args.put("x-delayed-type", "topic");
return new CustomExchange("delayed-ex", "x-delayed-message", true, false, args);
}
而且它正在与当前的配置,但它给我踪迹,对此,我要重写现有的交流:COM:通过引起
.rabbitmq.client.ShutdownSignalException:通道错误;协议方法:#method(reply-code = 406,reply-text = PRECONDITION_FAILED - 在vhost'/'中交换'delayed-ex'的不等价参数'type':收到'topic',但是current是''x-delayed-message ',class-id = 40,method-id = 10)
另一件事(不知道是否是一个问题)我想让消费者和生产者在同一个服务中,为我的消息。
另外,我检查了delayed-exchange
标志的来源,并看到这个标志没有做任何事情(我错了吗?),因为方法从AbstractExchange
不被调用。
是否可以申报类型为x-delayed-message
的延迟交换,并通过配置来完成,而不是声明bean?此外,我想删除堆栈跟踪