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 // === 机器人自动抢红包 延时 start === @Bean public DirectExchange buyTimeDelayTtlExchange() { return new DirectExchange(RabbitQueueEnum.FCMPAY_BUY_TIME_TTL.getExchange()); } @Bean public Binding buyTimeDelayBindTtl() { return BindingBuilder.bind(buyTimeDelayQueueTtl()).to(buyTimeDelayTtlExchange()).with(RabbitQueueEnum.FCMPAY_BUY_TIME_TTL.getRoute()); } @Bean public Queue buyTimeDelayQueueTtl() { return QueueBuilder.durable(RabbitQueueEnum.FCMPAY_BUY_TIME_TTL.getQueue()) //到期后转发的交换机 .withArgument("x-dead-letter-exchange", RabbitQueueEnum.FCMPAY_BUY_TIME.getExchange()) //到期后转发的路由键 .withArgument("x-dead-letter-routing-key", RabbitQueueEnum.FCMPAY_BUY_TIME.getRoute()) .build(); } @Bean public DirectExchange buyTimeDelayExchange() { return new DirectExchange(RabbitQueueEnum.FCMPAY_BUY_TIME.getExchange()); } @Bean public Queue buyTimeDelayQueue() { return new Queue(RabbitQueueEnum.FCMPAY_BUY_TIME.getQueue()); } @Bean public Binding buyTimeDelayBind() { return BindingBuilder.bind(buyTimeDelayQueue()).to(buyTimeDelayExchange()).with(RabbitQueueEnum.FCMPAY_BUY_TIME.getRoute()); } // === 机器人自动抢红包 延时 end === //强制卖出 start @Bean public DirectExchange fcmNFTExchangeExchange() { return new DirectExchange(RabbitQueueEnum.FCMPAY_FCM_NFT_EXCHANGE.getExchange()); } @Bean public Queue fcmNFTExchangeQueue() { return new Queue(RabbitQueueEnum.FCMPAY_FCM_NFT_EXCHANGE.getQueue()); } @Bean public Binding fcmNFTExchangeBind() { return BindingBuilder.bind(fcmNFTExchangeQueue()).to(fcmNFTExchangeExchange()).with(RabbitQueueEnum.FCMPAY_FCM_NFT_EXCHANGE.getRoute()); } //强制卖出 end //卖单用户确认 start @Bean public DirectExchange fcmOrderSellInsureExchange() { return new DirectExchange(RabbitQueueEnum.FCMPAY_FCM_ORDER_SELL_INSURE.getExchange()); } @Bean public Queue fcmOrderSellInsureQueue() { return new Queue(RabbitQueueEnum.FCMPAY_FCM_ORDER_SELL_INSURE.getQueue()); } @Bean public Binding fcmOrderSellInsureBind() { return BindingBuilder.bind(fcmOrderSellInsureQueue()).to(fcmOrderSellInsureExchange()).with(RabbitQueueEnum.FCMPAY_FCM_ORDER_SELL_INSURE.getRoute()); } //卖单用户确认 end //买单取消 start @Bean public DirectExchange fcmOrderBuyCancelExchange() { return new DirectExchange(RabbitQueueEnum.FCMPAY_FCM_ORDER_BUY_CANCEL.getExchange()); } @Bean public Queue fcmOrderBuyCancelQueue() { return new Queue(RabbitQueueEnum.FCMPAY_FCM_ORDER_BUY_CANCEL.getQueue()); } @Bean public Binding fcmOrderBuyCancelBind() { return BindingBuilder.bind(fcmOrderBuyCancelQueue()).to(fcmOrderBuyCancelExchange()).with(RabbitQueueEnum.FCMPAY_FCM_ORDER_BUY_CANCEL.getRoute()); } //买单取消 end }