package cc.mrbird.febs.common.configure; 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 javax.annotation.Resource; @Configuration public class RabbitConfigure { @Resource private ConnectionFactory connectionFactory; @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public RabbitTemplate rabbitTemplate() { return new RabbitTemplate(connectionFactory); } // === 充值自动过期 延时 start === @Bean public DirectExchange chargeDelayTtlExchange() { return new DirectExchange(RabbitQueueEnum.RUN_VIP_OPERATION_CHARGE_FAIL_TTL.getExchange()); } @Bean public Binding chargeDelayTtlBind() { return BindingBuilder.bind(chargeDelayTtlQueue()).to(chargeDelayTtlExchange()).with(RabbitQueueEnum.RUN_VIP_OPERATION_CHARGE_FAIL_TTL.getRoute()); } @Bean public Queue chargeDelayTtlQueue() { return QueueBuilder.durable(RabbitQueueEnum.RUN_VIP_OPERATION_CHARGE_FAIL_TTL.getQueue()) //到期后转发的交换机 .withArgument("x-dead-letter-exchange", RabbitQueueEnum.RUN_VIP_OPERATION_CHARGE_FAIL.getExchange()) //到期后转发的路由键 .withArgument("x-dead-letter-routing-key", RabbitQueueEnum.RUN_VIP_OPERATION_CHARGE_FAIL.getRoute()) .build(); } @Bean public DirectExchange chargeDelayExchange() { return new DirectExchange(RabbitQueueEnum.RUN_VIP_OPERATION_CHARGE_FAIL.getExchange()); } @Bean public Queue chargeDelayQueue() { return new Queue(RabbitQueueEnum.RUN_VIP_OPERATION_CHARGE_FAIL.getQueue()); } @Bean public Binding chargeDelayBind() { return BindingBuilder.bind(chargeDelayQueue()).to(chargeDelayExchange()).with(RabbitQueueEnum.RUN_VIP_OPERATION_CHARGE_FAIL.getRoute()); } // === 充值自动过期 延时 end === // start @Bean public DirectExchange agentReturnExchange() { return new DirectExchange(RabbitQueueEnum.RUN_VIP_OPERATION_CHARGE.getExchange()); } @Bean public Queue agentReturnQueue() { return new Queue(RabbitQueueEnum.RUN_VIP_OPERATION_CHARGE.getQueue()); } @Bean public Binding agentReturnBind() { return BindingBuilder.bind(agentReturnQueue()).to(agentReturnExchange()).with(RabbitQueueEnum.RUN_VIP_OPERATION_CHARGE.getRoute()); } // end // start @Bean public DirectExchange nodeUpExchange() { return new DirectExchange(RabbitQueueEnum.RUN_VIP_NODE_UP.getExchange()); } @Bean public Queue nodeUpQueue() { return new Queue(RabbitQueueEnum.RUN_VIP_NODE_UP.getQueue()); } @Bean public Binding nodeUpBind() { return BindingBuilder.bind(nodeUpQueue()).to(nodeUpExchange()).with(RabbitQueueEnum.RUN_VIP_NODE_UP.getRoute()); } // end }