我想創建從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?此外,我想刪除堆棧跟蹤