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()); 
 | 
    } 
 | 
  
 | 
    // === 奖励分发 start === 
 | 
    @Bean 
 | 
    public DirectExchange mallCoinDirectRewardExchange() { 
 | 
        return new DirectExchange(RabbitQueueEnum.MALL_COIN_DIRECT_REWARD.getExchange()); 
 | 
    } 
 | 
  
 | 
    @Bean 
 | 
    public Queue mallCoinDirectRewardQueue() { 
 | 
        return new Queue(RabbitQueueEnum.MALL_COIN_DIRECT_REWARD.getQueue()); 
 | 
    } 
 | 
  
 | 
    @Bean 
 | 
    public Binding mallCoinDirectRewardBind() { 
 | 
        return BindingBuilder.bind(mallCoinDirectRewardQueue()).to(mallCoinDirectRewardExchange()).with(RabbitQueueEnum.MALL_COIN_DIRECT_REWARD.getRoute()); 
 | 
    } 
 | 
    // === 奖励分发 end === 
 | 
  
 | 
    // === 创建新地址 start === 
 | 
    @Bean 
 | 
    public DirectExchange mallCoinTrcUsdtAddressExchange() { 
 | 
        return new DirectExchange(RabbitQueueEnum.MALL_COIN_TRC_USDT_ADDRESS.getExchange()); 
 | 
    } 
 | 
    @Bean 
 | 
    public Queue mallCoinTrcUsdtAddressQueue() { 
 | 
        return new Queue(RabbitQueueEnum.MALL_COIN_TRC_USDT_ADDRESS.getQueue(), true); 
 | 
    } 
 | 
    @Bean 
 | 
    public Binding mallCoinTrcUsdtAddressBinding() { 
 | 
        return BindingBuilder.bind(mallCoinTrcUsdtAddressQueue()).to(mallCoinTrcUsdtAddressExchange()) 
 | 
                .with(RabbitQueueEnum.MALL_COIN_TRC_USDT_ADDRESS.getRoute()); 
 | 
    } 
 | 
    // === 创建新地址 end === 
 | 
  
 | 
    // === usdt更新 start === 
 | 
    @Bean 
 | 
    public DirectExchange mallCoinTrcUsdtUpdateExchange() { 
 | 
        return new DirectExchange(RabbitQueueEnum.MALL_COIN_TRC_USDT_UPDATE.getExchange()); 
 | 
    } 
 | 
    @Bean 
 | 
    public Queue mallCoinTrcUsdtUpdateQueue() { 
 | 
        return new Queue(RabbitQueueEnum.MALL_COIN_TRC_USDT_UPDATE.getQueue(), true); 
 | 
    } 
 | 
    @Bean 
 | 
    public Binding mallCoinTrcUsdtUpdateBinding() { 
 | 
        return BindingBuilder.bind(mallCoinTrcUsdtUpdateQueue()).to(mallCoinTrcUsdtUpdateExchange()) 
 | 
                .with(RabbitQueueEnum.MALL_COIN_TRC_USDT_ADDRESS.getRoute()); 
 | 
    } 
 | 
    // === usdt更新 end === 
 | 
  
 | 
    // === TRC20_USDT同步 start === 
 | 
    @Bean 
 | 
    public DirectExchange mallCoinTrcTrc20Exchange() { 
 | 
        return new DirectExchange(RabbitQueueEnum.MALL_COIN_TRC_TRC20_BLOCK.getExchange()); 
 | 
    } 
 | 
    @Bean 
 | 
    public Queue mallCoinTrcTrc20Queue() { 
 | 
        return new Queue(RabbitQueueEnum.MALL_COIN_TRC_TRC20_BLOCK.getQueue(), true); 
 | 
    } 
 | 
    @Bean 
 | 
    public Binding mallCoinTrcTrc20Binding() { 
 | 
        return BindingBuilder.bind(mallCoinTrcTrc20Queue()).to(mallCoinTrcTrc20Exchange()) 
 | 
                .with(RabbitQueueEnum.MALL_COIN_TRC_TRC20_BLOCK.getRoute()); 
 | 
    } 
 | 
    // === TRC20_USDT同步 end === 
 | 
  
 | 
} 
 |