package com.xcong.excoin.configurations; import com.xcong.excoin.configurations.properties.CustomRabbitProperties; 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 2020-05-25 **/ @Configuration public class RabbitMqConfig { public static final String EXCHANGE_ONE = "excoin-exchange-one"; public static final String QUEUE_TEST = "test-queue"; public static final String ROUTING_KEY_TEST = "test-routingKey"; public static final String EXCHANGE_A = "biyi-exchange-A"; // 开多止盈队列 public static final String QUEUE_MOREPRO = "QUEUE_MOREPRO_NEW"; // 开空止盈队列 public static final String QUEUE_LESSPRO = "QUEUE_LESSPRO_NEW"; // 开多止损队列 public static final String QUEUE_MORELOSS = "QUEUE_MORELOSS_NEW"; // 开空止损队列 public static final String QUEUE_LESSLOSS = "QUEUE_LESSLOSS_NEW"; // 限价委托 public static final String QUEUE_LIMIT = "QUEUE_LIMIT_NEW"; // 爆仓队列 public static final String QUEUE_COINOUT = "QUEUE_COINOUT_NEW"; //价格操作 public static final String QUEUE_PRICEOPERATE = "QUEUE_PRICEOPERATE_NEW"; // 平仓队列 public static final String QUEUE_CLOSETRADE = "QUEUE_CLOSETRADE_NEW"; // 开多止盈路由键 public static final String ROUTINGKEY_MOREPRO = "ROUTINGKEY_MOREPRO"; // 开空止盈路由 public static final String ROUTINGKEY_LESSPRO = "ROUTINGKEY_LESSPRO"; // 开多止损路由 public static final String ROUTINGKEY_MORELOSS = "ROUTINGKEY_MORELOSS"; // 开空止损路由 public static final String ROUTINGKEY_LESSLOSS = "ROUTINGKEY_LESSLOSS"; // 限价委托 public static final String ROUTINGKEY_LIMIT = "ROUTINGKEY_LIMIT"; // 爆仓路由 public static final String ROUTINGKEY_COINOUT = "ROUTINGKEY_COINOUT"; // 价格操作 public static final String ROUTINGKEY_PRICEOPERATE = "ROUTINGKEY_PRICEOPERATE"; // 平仓路由 public static final String ROUTINGKEY_CLOSETRADE = "ROUTINGKEY_CLOSETRADE"; @Resource private ConnectionFactory connectionFactory; // @Bean // public ConnectionFactory connectionFactory() { // CachingConnectionFactory connectionFactory = new CachingConnectionFactory(customRabbitProperties.getHost(), customRabbitProperties.getPort()); // connectionFactory.setUsername(customRabbitProperties.getUsername()); // connectionFactory.setPassword(customRabbitProperties.getPassword()); // connectionFactory.setPublisherConfirmType(CachingConnectionFactory.ConfirmType.CORRELATED); // return 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 testQueue() { return new Queue(QUEUE_TEST, true); } @Bean public Binding binding() { return BindingBuilder.bind(testQueue()).to(defaultExchange()).with(ROUTING_KEY_TEST); } /** * 交换器A 可以继续添加交换器B C * * @return */ @Bean public DirectExchange orderExchange() { return new DirectExchange(EXCHANGE_A); } /** * 开多止盈队列 * * @return */ @Bean public Queue queueMorePro() { // 定义一个名称为QUEUE_A,持久化的队列 return new Queue(QUEUE_MOREPRO, true); } /** * 开空止盈队列 * * @return */ @Bean public Queue queueLessPro() { // 定义一个名称为QUEUE_A,持久化的队列 return new Queue(QUEUE_LESSPRO, true); } /** * 开多止损 * * @return */ @Bean public Queue queueMoreLoss() { // 定义一个名称为QUEUE_A,持久化的队列 return new Queue(QUEUE_MORELOSS, true); } /** * 开空止损 * * @return */ @Bean public Queue queueLessLoss() { // 定义一个名称为QUEUE_A,持久化的队列 return new Queue(QUEUE_LESSLOSS, true); } /** * 限价委托 * * @return */ @Bean public Queue queueLimit() { return new Queue(QUEUE_LIMIT, true); } /** * 爆仓 * * @return */ @Bean public Queue queueCoinout() { return new Queue(QUEUE_COINOUT, true); } /** * 价格操作 * * @return */ @Bean public Queue queuePriceoperate() { return new Queue(QUEUE_PRICEOPERATE, true); } /** * 价格操作 * * @return */ @Bean public Queue queueCloseTrade() { return new Queue(QUEUE_CLOSETRADE, true); } /** * 开多止盈 * * @return */ @Bean public Binding bindingMroPro() { return BindingBuilder.bind(queueMorePro()).to(orderExchange()).with(RabbitMqConfig.ROUTINGKEY_MOREPRO); } /** * 开空止盈 * * @return */ @Bean public Binding bindingLessPro() { return BindingBuilder.bind(queueLessPro()).to(orderExchange()).with(RabbitMqConfig.ROUTINGKEY_LESSPRO); } /** * 开多止损 * * @return */ @Bean public Binding bindingMroLoss() { return BindingBuilder.bind(queueMoreLoss()).to(orderExchange()).with(RabbitMqConfig.ROUTINGKEY_MORELOSS); } /** * 开空止损 * * @return */ @Bean public Binding bindingLessLoss() { return BindingBuilder.bind(queueLessLoss()).to(orderExchange()).with(RabbitMqConfig.ROUTINGKEY_LESSLOSS); } /** * 委托 * * @return */ @Bean public Binding bindingLimit() { return BindingBuilder.bind(queueLimit()).to(orderExchange()).with(RabbitMqConfig.ROUTINGKEY_LIMIT); } /** * 爆仓 * * @return */ @Bean public Binding bindingCoinout() { return BindingBuilder.bind(queueCoinout()).to(orderExchange()).with(RabbitMqConfig.ROUTINGKEY_COINOUT); } /** * 价格操作 * * @return */ @Bean public Binding bindingPriceoperate() { return BindingBuilder.bind(queuePriceoperate()).to(orderExchange()).with(RabbitMqConfig.ROUTINGKEY_PRICEOPERATE); } /** * 平仓绑定 * * @return */ @Bean public Binding bindingCloseTrade() { return BindingBuilder.bind(queueCloseTrade()).to(orderExchange()).with(RabbitMqConfig.ROUTINGKEY_CLOSETRADE); } }