package cc.mrbird.febs.common.configure; import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.BindingBuilder; import org.springframework.amqp.core.DirectExchange; import org.springframework.amqp.core.Queue; 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; /** * @author wzy * @date 2021-12-17 **/ @Configuration public class RabbitMqConfig { public static final String EXCHANGE_USDT_ADDRESS = "exchange_usdt_address"; public static final String QUEUE_USDT_ADDRESS= "queue_usdt_address"; public static final String ROUTING_KEY_USDT_ADDRESS = "routing_key_usdt_address"; public static final String EXCHANGE_ONE = "exchange_trc20_block"; public static final String QUEUE_TRC20_BLOCK = "QUEUE_TRC20_BLOCK"; public static final String ROUTING_TRC20_BLOCK = "ROUTING_TRC20_BLOCK"; public static final String EXCHANGE_USDT_UPDATE = "exchange_usdt_update"; public static final String QUEUE_USDT_UPDATE = "queue_usdt_update"; public static final String ROUTING_KEY_USDT_UPDATE = "routing_key_usdt_update"; @Resource private ConnectionFactory connectionFactory; @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public RabbitTemplate rabbitTemplate() { return new RabbitTemplate(connectionFactory); } @Bean public DirectExchange defaultExchange() { return new DirectExchange(EXCHANGE_ONE); } @Bean public Queue trc20Queue() { return new Queue(QUEUE_TRC20_BLOCK); } @Bean public Binding trc20Binding() { return BindingBuilder.bind(trc20Queue()).to(defaultExchange()).with(ROUTING_TRC20_BLOCK); } @Bean public Queue usdtAddressQueue() { return new Queue(QUEUE_USDT_ADDRESS, true); } @Bean public Binding usdtAddressbinding() { return BindingBuilder.bind(usdtAddressQueue()).to(usdtAddressExchange()).with(ROUTING_KEY_USDT_ADDRESS); } @Bean public DirectExchange usdtAddressExchange() { return new DirectExchange(EXCHANGE_USDT_ADDRESS); } @Bean public DirectExchange usdtUpdateExchange() { return new DirectExchange(EXCHANGE_USDT_UPDATE); } @Bean public Queue usdtUpdateQueue() { return new Queue(QUEUE_USDT_UPDATE, true); } @Bean public Binding usdtUpdatebinding() { return BindingBuilder.bind(usdtUpdateQueue()).to(usdtUpdateExchange()).with(ROUTING_KEY_USDT_UPDATE); } }