| package cc.mrbird.febs.common.configure; | 
|   | 
| import cc.mrbird.febs.rabbit.constants.ExchangeConstants; | 
| import cc.mrbird.febs.rabbit.constants.QueueConstants; | 
| import cc.mrbird.febs.rabbit.constants.RouteKeyConstants; | 
| import cc.mrbird.febs.rabbit.enumerates.RabbitQueueEnum; | 
| import org.springframework.amqp.core.*; | 
| import org.springframework.amqp.rabbit.connection.ConnectionFactory; | 
| import org.springframework.amqp.rabbit.core.RabbitTemplate; | 
| import org.springframework.beans.factory.config.ConfigurableBeanFactory; | 
| import org.springframework.context.annotation.Bean; | 
| import org.springframework.context.annotation.Configuration; | 
| import org.springframework.context.annotation.Scope; | 
| import org.springframework.stereotype.Component; | 
|   | 
| import javax.annotation.Resource; | 
|   | 
| /** | 
|  * @author wzy | 
|  * @date 2021-09-25 | 
|  **/ | 
| @Configuration | 
| public class RabbitConfigure { | 
|   | 
|     @Resource | 
|     private ConnectionFactory connectionFactory; | 
|   | 
|     @Bean | 
|     @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) | 
|     public RabbitTemplate rabbitTemplate() { | 
|         return new RabbitTemplate(connectionFactory); | 
|     } | 
|   | 
|     @Bean | 
|     public DirectExchange defaultExchange() { | 
|         return new DirectExchange(ExchangeConstants.EXCHANGE_DEFAULT); | 
|     } | 
|   | 
|     @Bean | 
|     public Queue defaultQueue() { | 
|         return new Queue(QueueConstants.QUEUE_DEFAULT); | 
|     } | 
|   | 
|     @Bean | 
|     public Binding defaultBind() { | 
|         return BindingBuilder.bind(defaultQueue()).to(defaultExchange()).with(RouteKeyConstants.ROUTE_KEY_DEFAULT); | 
|     } | 
|   | 
|     @Bean | 
|     public DirectExchange delayTtlExchange() { | 
|         return new DirectExchange(RabbitQueueEnum.ORDER_CANCEL_DELAY_TTL.getExchange()); | 
|     } | 
|   | 
|     @Bean | 
|     public DirectExchange orderDelayExchange() { | 
|         return new DirectExchange(RabbitQueueEnum.ORDER_CANCEL_DELAY.getExchange()); | 
|     } | 
|   | 
|     @Bean | 
|     public Queue orderDelayQueue() { | 
|         return new Queue(RabbitQueueEnum.ORDER_CANCEL_DELAY.getQueue()); | 
|     } | 
|   | 
|     @Bean | 
|     public Queue orderDelayQueueTtl() { | 
|         return QueueBuilder.durable(RabbitQueueEnum.ORDER_CANCEL_DELAY_TTL.getQueue()) | 
|                 //到期后转发的交换机 | 
|                 .withArgument("x-dead-letter-exchange", RabbitQueueEnum.ORDER_CANCEL_DELAY.getExchange()) | 
|                 //到期后转发的路由键 | 
|                 .withArgument("x-dead-letter-routing-key", RabbitQueueEnum.ORDER_CANCEL_DELAY.getRoute()) | 
|                 .build(); | 
|     } | 
|   | 
|     @Bean | 
|     public Binding orderDelayBind() { | 
|         return BindingBuilder.bind(orderDelayQueue()).to(orderDelayExchange()).with(RabbitQueueEnum.ORDER_CANCEL_DELAY.getRoute()); | 
|     } | 
|   | 
|     @Bean | 
|     public Binding orderDelayBindTtl() { | 
|         return BindingBuilder.bind(orderDelayQueueTtl()).to(delayTtlExchange()).with(RabbitQueueEnum.ORDER_CANCEL_DELAY_TTL.getRoute()); | 
|     } | 
|   | 
|     @Bean | 
|     public Queue autoLevelUpAgentQueue() { | 
|         return new Queue(QueueConstants.AGENT_AUTO_LEVEL_UP); | 
|     } | 
|   | 
|     @Bean | 
|     public Binding autoLevelUpBind() { | 
|         return BindingBuilder.bind(autoLevelUpAgentQueue()).to(defaultExchange()).with(RouteKeyConstants.ROUTE_KEY_DEFAULT); | 
|     } | 
|   | 
|     @Bean | 
|     public DirectExchange agentReturnMoneyExchange() { | 
|         return new DirectExchange(RabbitQueueEnum.AGENT_REUTRN_MONEY.getExchange()); | 
|     } | 
|   | 
|     @Bean | 
|     public Queue agentReturnMoneyQueue() { | 
|         return new Queue(QueueConstants.AGENT_RETURN_MONEY); | 
|     } | 
|   | 
|     @Bean | 
|     public Binding agentReturnMoneyBind() { | 
|         return BindingBuilder.bind(agentReturnMoneyQueue()).to(agentReturnMoneyExchange()).with(RabbitQueueEnum.AGENT_REUTRN_MONEY.getRoute()); | 
|     } | 
|   | 
|   | 
|     @Bean | 
|     public DirectExchange orderReturnMoneyExchange() { | 
|         return new DirectExchange(RabbitQueueEnum.ORDER_RETURN_MONEY.getExchange()); | 
|     } | 
|   | 
|     @Bean | 
|     public Queue orderReturnMoneyQueue() { | 
|         return new Queue(QueueConstants.ORDER_RETURN_MONEY); | 
|     } | 
|   | 
|     @Bean | 
|     public Binding orderReturnMoneyBind() { | 
|         return BindingBuilder.bind(orderReturnMoneyQueue()).to(orderReturnMoneyExchange()).with(RabbitQueueEnum.ORDER_RETURN_MONEY.getRoute()); | 
|     } | 
|   | 
|     /** | 
|      * 补贴金额 | 
|      * @return | 
|      */ | 
|     //补贴金额 start | 
|     @Bean | 
|     public DirectExchange perkMoneyExchange() { | 
|         return new DirectExchange(RabbitQueueEnum.PERK_MONEY.getExchange()); | 
|     } | 
|   | 
|     @Bean | 
|     public Queue perkMoneyQueue() { | 
|         return new Queue(QueueConstants.PERK_MONEY); | 
|     } | 
|   | 
|     @Bean | 
|     public Binding perkMoneyBind() { | 
|         return BindingBuilder.bind(perkMoneyQueue()).to(perkMoneyExchange()).with(RabbitQueueEnum.PERK_MONEY.getRoute()); | 
|     } | 
|     //补贴金额 end | 
|   | 
|     /** | 
|      * 强制卖出 | 
|      * @return | 
|      */ | 
|     //强制卖出 start | 
|     @Bean | 
|     public DirectExchange forceVoucherSaleExchange() { | 
|         return new DirectExchange(RabbitQueueEnum.FORCE_VOUCHER_SALE.getExchange()); | 
|     } | 
|   | 
|     @Bean | 
|     public Queue forceVoucherSaleQueue() { | 
|         return new Queue(QueueConstants.FORCE_VOUCHER_SALE); | 
|     } | 
|   | 
|     @Bean | 
|     public Binding forceVoucherSaleBind() { | 
|         return BindingBuilder.bind(forceVoucherSaleQueue()).to(forceVoucherSaleExchange()).with(RabbitQueueEnum.FORCE_VOUCHER_SALE.getRoute()); | 
|     } | 
|     //强制卖出 end | 
|   | 
| } |