簡體   English   中英

設置 Spring Cloud Rabbit + deadLetter

[英]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 中的幫助和工作示例

請參閱文檔

特別是dlqDeadLetterExchangedlqDeadLetterRoutingKey

你已經有了dlqTtl

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM