[英]Setting Spring Cloud Rabbit + deadLetter
我有 Rebbit 的工作配置 - 使用 TTL 從等待(死信)中的主隊列發送消息,然后將其從到期中拋出:
@Configuration
@AllArgsConstructor
public class RabbitConfig {
public static final String QUEUE_MESSAGES = "demo-messages-queue";
public static final String QUEUE_MESSAGES_DLQ = QUEUE_MESSAGES + ".dlq";
public static final String EXCHANGE_MESSAGES = "demo-messages-exchange";
@Bean
public DirectExchange exchange() {
return new DirectExchange(EXCHANGE_MESSAGES);
}
@Bean
public Queue mainQueue() {
return QueueBuilder
.durable(QUEUE_MESSAGES)
.withArgument("x-dead-letter-exchange", EXCHANGE_MESSAGES)
.withArgument("x-dead-letter-routing-key", QUEUE_MESSAGES_DLQ)
.build();
}
@Bean
public Queue deadLetterQueue() {
return QueueBuilder
.durable(QUEUE_MESSAGES_DLQ)
.withArgument("x-dead-letter-exchange", EXCHANGE_MESSAGES)
.withArgument("x-dead-letter-routing-key", QUEUE_MESSAGES)
.withArgument("x-message-ttl", 30000)
.build();
}
@Bean
public Binding mainBinding() {
return BindingBuilder
.bind(mainQueue())
.to(exchange())
.with(QUEUE_MESSAGES);
}
@Bean
public Binding deadLetterBinding() {
return BindingBuilder
.bind(deadLetterQueue())
.to(exchange())
.with(QUEUE_MESSAGES_DLQ);
}
}
我不能在 application.yml 中為 Spring Cloud Stream 重復相同的方案
spring:
cloud:
stream:
binders:
rabbitAll:
type: rabbit
environment:
spring:
rabbitmq:
host: localhost
port: 5672
virtual-host: test
username: guest
password: guest
rabbit:
bindings:
demo-messages-push-input:
consumer:
bindingRoutingKey: demo-messages-queue
routingKeyExpression: '''demo-messages-queue'''
bindQueue: true
autoBindDlq: true
dlqTtl: 30000
bindings:
demo-messages-push-input:
destination: demo-messages-queue
binder: rabbitAll
demo-messages-push-output:
destination: demo-messages-queue
binder: rabbitAll
我將不勝感激 application.yml 中的幫助和工作示例
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.