Spring Cloud Stream RabbitMQ 配置死信队列,消费死信队列

Spring Cloud Stream RabbitMQ 配置死信队列,消费死信队列

Application.java

package com.buxiaoxia;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.annotation.StreamListener;
import org.springframework.integration.support.MessageBuilder;
import org.springframework.messaging.Message;


@SpringBootApplication
@EnableBinding({PayValidateSink.class,PayOutputSink.class})
@Slf4j
public class Application implements CommandLineRunner {

    @Autowired
    private PayOutputSink payOutputSink;


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

    @Override
    public void run(String... strings) throws Exception {
        payOutputSink.afterLoanComplete().send(MessageBuilder.withPayload("adfadf").build());
    }

    @StreamListener("inputBinding")
    public void getMessage(Message message) {
        Long startTime = System.currentTimeMillis();
        log.info("接收到死信队列的消息{}",message);
        Long endTime = System.currentTimeMillis();
        log.info("耗时{}", endTime-startTime);
    }

}

PayOutputSink.java

package com.buxiaoxia;

import org.springframework.cloud.stream.annotation.Output;
import org.springframework.messaging.MessageChannel;

/**
 * Created by Lenovo on 2018/10/25.
 */
public interface PayOutputSink {

	//创建一个outputBinding的exchange
    @Output("outputBinding")
    MessageChannel afterLoanComplete();
}

PayValidateSink .java

package com.buxiaoxia;

import org.springframework.cloud.stream.annotation.Input;
import org.springframework.messaging.SubscribableChannel;

/**
 * Created by Lenovo on 2018/10/19.
 */
public interface PayValidateSink {
	//创建一个
    @Input("inputBinding")
    SubscribableChannel bindingsOf1();
}

application.yml

server:
  port: 8081
spring:
  cloud:
    stream:
      binders:
        defaultRabbit:
          type: rabbit
      defaultBinder: defaultRabbit
      bindings:
        inputBinding:
          group: product-deadletter-queue 
        outputBinding:
          producer:
            required-groups: product-group #生产者exchange绑定队列
      rabbit:
        bindings:
          outputBinding:
            producer:
              ttl: 3000 #消息3秒不消费转入私信队列
              autoBindDlq: true #启动私信队列
              deadLetterExchange: inputBinding #绑定exchange
              deadLetterQueueName: inputBinding.product-deadletter-queue #死信队列名字:exchanName.queueName
  application:
    name: spring-cloud-stream-rabbitmq
  rabbitmq:                  # 默认的 mq的配置时候,上述的配置方式,可以支持多个 broker
    port: 5672
    host: localhost
    username: root
    password: 123456
    ```




猜你喜欢

转载自blog.csdn.net/kennyije/article/details/83622460