| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- package com.poyee.mq;
- import org.springframework.amqp.core.Binding;
- import org.springframework.amqp.core.BindingBuilder;
- import org.springframework.amqp.core.DirectExchange;
- import org.springframework.amqp.core.Queue;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import java.util.HashMap;
- import java.util.Map;
- /**
- *
- */
- @Configuration
- public class RabbitMqConfig {
- /**
- * 测试队列
- */
- public static final String QUEUE_TEST_HELLO = "QUEUE_TEST_HELLO";
- /**死信交换机**/
- public static final String SYS_ORDER_DELAY_EXCHANGE = "SYS_ORDER_DELAY_EXCHANGE";
- /**接收死信队列消息**/
- public static final String SYS_ORDER_RECEIVE_EXCHANGE = "SYS_ORDER_RECEIVE_EXCHANGE";
- /**死信接收队列**/
- public static final String SYS_ORDER_RECEIVE_QUEUE = "SYS_ORDER_RECEIVE_QUEUE";
- /**延时队列**/
- public static final String SYS_ORDER_DELAY_QUEUE = "SYS_ORDER_DELAY_QUEUE";
- /**路由key**/
- public static final String SYS_ORDER_RECEIVE_KEY = "SYS_ORDER_RECEIVE_KEY";
- /**死信队列路由key**/
- public static final String SYS_ORDER_DELAY_KEY = "SYS_ORDER_DELAY_KEY";
- /**
- * 测试发送消息到MQ
- * @return
- */
- @Bean
- public Queue testHello() {
- return new Queue(QUEUE_TEST_HELLO);
- }
- /**
- * 死信交换机
- * @return
- */
- @Bean
- public DirectExchange sysOrderDelayExchange() {
- return new DirectExchange(SYS_ORDER_DELAY_EXCHANGE);
- }
- /**
- * 死信队列
- * @return
- */
- @Bean
- public Queue sysOrderDelayQueue() {
- Map<String, Object> map = new HashMap<String, Object>(16);
- map.put("x-dead-letter-exchange",SYS_ORDER_RECEIVE_EXCHANGE); //指定死信送往的交换机
- map.put("x-dead-letter-routing-key", SYS_ORDER_RECEIVE_KEY); //指定死信的routingkey
- return new Queue(SYS_ORDER_DELAY_QUEUE, true, false, false, map);
- }
- /**
- * 给死信队列绑定死信交换机
- * @return
- */
- @Bean
- public Binding sysOrderDelayBinding() {
- return BindingBuilder.bind(sysOrderDelayQueue()).to(sysOrderDelayExchange()).with(SYS_ORDER_DELAY_KEY);
- }
- /**
- * 死信接收交换机,用于接收死信队列的消息
- * @return
- */
- @Bean
- public DirectExchange sysOrderReceiveExchange() {
- return new DirectExchange(SYS_ORDER_RECEIVE_EXCHANGE);
- }
- /**
- * 死信接收队列
- * @return
- */
- @Bean
- public Queue sysOrderReceiveQueue() {
- return new Queue(SYS_ORDER_RECEIVE_QUEUE);
- }
- /**
- * 死信接收交换机绑定接收死信队列消费队列
- * @return
- */
- @Bean
- public Binding sysOrdeReceiveBinding() {
- return BindingBuilder.bind(sysOrderReceiveQueue()).to(sysOrderReceiveExchange()).with(SYS_ORDER_RECEIVE_KEY);
- }
- }
|