package com.panzhihua.service_community.config; import org.springframework.amqp.core.*; import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; import org.springframework.amqp.support.converter.MessageConverter; 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 PreOrder_QUEUE="huacheng.preOrder.queue"; public static final String PreOrder_ROUTING_KEY="huacheng.preOrder.key"; public static final String PreOrder_EXCHANGE="huacheng.preOrder.exchange"; public static final String Order_QUEUE="huacheng.order.queue"; public static final String Order_ROUTING_KEY="huacheng.order.key"; public static final String Order_EXCHANGE="huacheng.order.exchange"; public static final String RAFFLE_QUEUE="huacheng.raffle.queue"; public static final String RAFFLE_ROUTING_KEY="huacheng.raffle.key"; public static final String RAFFLE_EXCHANGE="huacheng.raffle.exchange"; public static final String McsOrder_QUEUE="huacheng.mcsOrder.queue"; public static final String McsOrder_ROUTING_KEY="huacheng.mcsOrder.key"; public static final String McsOrder_EXCHANGE="huacheng.mcsOrder.exchange"; public static final String ACID_QUEUE="huacheng.acid.queue"; public static final String ACID_ROUTING_KEY="huacheng.acid.key"; public static final String ACID_EXCHANGE="huacheng.acid.exchange"; public static final String ACID_DANGER_QUEUE = "huacheng.acid.danger.queue"; public static final String ACID_DANGER_ROUTING_KEY = "huacheng.acid.danger.key"; public static final String ACID_DANGER_EXCHANGE = "huacheng.acid.danger.exchange"; public static final String ACID_DIRECT_QUEUE = "huacheng.acid.direct.queue"; public static final String ACID_DIRECT_ROUTING_KEY = "huacheng.acid.direct.key"; public static final String ACID_DIRECT_EXCHANGE = "huacheng.acid.direct.exchange"; public static final String ACID_MESSAGE_QUEUE="huacheng.acid.message.queue"; public static final String ACID_MESSAGE_ROUTING_KEY = "huacheng.acid.message.key"; public static final String ACID_MESSAGE_EXCHANGE = "huacheng.acid.message.exchange"; /** * 服务商城订单 */ public static final String SHOP_ORDER_QUEUE="huacheng.shop.order.queue"; public static final String SHOP_ORDER_ROUTING_KEY = "huacheng.shop.order.key"; public static final String SHOP_ORDER_EXCHANGE = "huacheng.shop.order.exchange"; @Bean public Queue preOrderQueue(){ return new Queue(PreOrder_QUEUE,true,false,false,null); } @Bean public Exchange preOrderExchange(){ Map arguments = new HashMap<>(); arguments.put("x-delayed-type", ExchangeTypes.DIRECT); return new CustomExchange(PreOrder_EXCHANGE,"x-delayed-message",true,false,arguments); } @Bean public Binding preOrderBinding(){ return BindingBuilder.bind(preOrderQueue()).to(preOrderExchange()).with(PreOrder_ROUTING_KEY).noargs(); } @Bean public Queue raffleQueue(){ return new Queue(RAFFLE_QUEUE,true,false,false,null); } @Bean public Exchange raffleExchange(){ Map arguments = new HashMap<>(); arguments.put("x-delayed-type", ExchangeTypes.DIRECT); return new CustomExchange(RAFFLE_EXCHANGE,"x-delayed-message",true,false,arguments); } @Bean public Binding raffleBinding(){ return BindingBuilder.bind(raffleQueue()).to(raffleExchange()).with(RAFFLE_ROUTING_KEY).noargs(); } @Bean public Queue acidQueue(){ return new Queue(ACID_QUEUE,true,false,false,null); } @Bean public Exchange acidExchange(){ Map arguments = new HashMap<>(); arguments.put("x-delayed-type", ExchangeTypes.DIRECT); return new CustomExchange(ACID_EXCHANGE,"x-delayed-message",true,false,arguments); } @Bean public Binding acidBinding(){ return BindingBuilder.bind(acidQueue()).to(acidExchange()).with(ACID_ROUTING_KEY).noargs(); } @Bean public Queue acidDangerQueue(){ return new Queue(ACID_DANGER_QUEUE,true,false,false,null); } @Bean public Exchange acidDangerExchange(){ Map arguments = new HashMap<>(); arguments.put("x-delayed-type", ExchangeTypes.DIRECT); return new CustomExchange(ACID_DANGER_EXCHANGE,"x-delayed-message",true,false,arguments); } @Bean public Binding acidDangerBinding(){ return BindingBuilder.bind(acidDangerQueue()).to(acidDangerExchange()).with(ACID_DANGER_ROUTING_KEY).noargs(); } @Bean public Queue acidDirectQueue(){ return new Queue(ACID_DIRECT_QUEUE,true,false,false,null); } @Bean public Exchange acidDirectExchange(){ return new DirectExchange(ACID_DIRECT_EXCHANGE,true,false); } @Bean public Binding acidDirectBinding(){ return BindingBuilder.bind(acidDirectQueue()).to(acidDirectExchange()).with(ACID_DIRECT_ROUTING_KEY).noargs(); } @Bean public Queue acidMessageQueue(){ return new Queue(ACID_MESSAGE_QUEUE,true,false,false,null); } @Bean public Exchange acidMessageExchange(){ return new DirectExchange(ACID_MESSAGE_EXCHANGE,true,false); } @Bean public Binding acidMessageBinding(){ return BindingBuilder.bind(acidMessageQueue()).to(acidMessageExchange()).with(ACID_MESSAGE_ROUTING_KEY).noargs(); } @Bean public Queue mcsOrderQueue(){ return new Queue(McsOrder_QUEUE,true,false,false,null); } @Bean public Exchange mcsOrderExchange(){ Map arguments = new HashMap<>(); arguments.put("x-delayed-type", ExchangeTypes.DIRECT); return new CustomExchange(McsOrder_EXCHANGE,"x-delayed-message",true,false,arguments); } @Bean public Binding mcsOrderBinding(){ return BindingBuilder.bind(mcsOrderQueue()).to(mcsOrderExchange()).with(McsOrder_ROUTING_KEY).noargs(); } @Bean public Queue orderQueue(){ return new Queue(Order_QUEUE,true,false,false,null); } @Bean public Exchange orderExchange(){ Map arguments = new HashMap<>(); arguments.put("x-delayed-type", ExchangeTypes.DIRECT); return new CustomExchange(Order_EXCHANGE,"x-delayed-message",true,false,arguments); } @Bean public Binding orderBinding(){ return BindingBuilder.bind(orderQueue()).to(orderExchange()).with(Order_ROUTING_KEY).noargs(); } public Queue directQueue() { // durable:是否持久化,默认是false,持久化队列:会被存储在磁盘上,当消息代理重启时仍然存在,暂存队列:当前连接有效 // exclusive:默认也是false,只能被当前创建的连接使用,而且当连接关闭后队列即被删除。此参考优先级高于durable // autoDelete:是否自动删除,当没有生产者或者消费者使用此队列,该队列会自动删除。 // return new Queue("TestDirectQueue",true,true,false); //一般设置一下队列的持久化就好,其余两个就是默认false return new Queue("directQueue",true); } //Direct交换机 起名:TestDirectExchange @Bean DirectExchange directExchange() { // return new DirectExchange("TestDirectExchange",true,true); return new DirectExchange("directExchange",true,false); } //绑定 将队列和交换机绑定, 并设置用于匹配键:TestDirectRouting @Bean Binding bindingDirect() { return BindingBuilder.bind(directQueue()).to(directExchange()).with("directRouting"); } public Queue pushQueue() { // durable:是否持久化,默认是false,持久化队列:会被存储在磁盘上,当消息代理重启时仍然存在,暂存队列:当前连接有效 // exclusive:默认也是false,只能被当前创建的连接使用,而且当连接关闭后队列即被删除。此参考优先级高于durable // autoDelete:是否自动删除,当没有生产者或者消费者使用此队列,该队列会自动删除。 // return new Queue("TestDirectQueue",true,true,false); //一般设置一下队列的持久化就好,其余两个就是默认false return new Queue("pushQueue",true); } //Direct交换机 起名:TestDirectExchange @Bean DirectExchange pushExchange() { // return new DirectExchange("TestDirectExchange",true,true); return new DirectExchange("PUSH_Exchange",true,false); } //绑定 将队列和交换机绑定, 并设置用于匹配键:TestDirectRouting @Bean Binding bindingPush() { return BindingBuilder.bind(directQueue()).to(directExchange()).with("PUSH_ROUTING"); } @Bean DirectExchange lonelyDirectExchange() { return new DirectExchange("lonelyDirectExchange"); } @Bean public MessageConverter messageConverter(){ return new Jackson2JsonMessageConverter(); } @Bean public Queue shopOrderQueue(){ return new Queue(SHOP_ORDER_QUEUE,true,false,false,null); } @Bean public Exchange shopOrderExchange(){ Map arguments = new HashMap<>(); arguments.put("x-delayed-type", ExchangeTypes.DIRECT); return new CustomExchange(SHOP_ORDER_EXCHANGE,"x-delayed-message",true,false,arguments); } @Bean public Binding shopOrderBinding(){ return BindingBuilder.bind(shopOrderQueue()).to(shopOrderExchange()).with(SHOP_ORDER_ROUTING_KEY).noargs(); } }