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 = "biue-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 = "biue-exchange-A";
|
|
/**
|
* 撮合交易
|
*/
|
public static final String EXCHANGE_B = "biue-exchange-B";
|
|
|
// 开多止盈队列
|
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 QUEUE_TRADE_PLATE = "QUEUE_TRADE_PLATE";
|
|
// 处理交易
|
public static final String QUEUE_HANDLE_TRADE = "QUEUE_HANDLE_TRADE";
|
|
|
// 开多止盈路由键
|
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";
|
|
// 盘口理路由
|
public static final String ROUTINGKEY_TRADE_PLATE = "ROUTINGKEY_TRADE_PLATE";
|
|
// 交易订单处理
|
public static final String ROUTINGKEY_HANDLE_TRADE = "ROUTINGKEY_HANDLE_TRADE";
|
|
public static final String EXCHANGE_ROC = "roc-transfer";
|
|
public static final String QUEUE_ROC= "roc-queue";
|
|
public static final String ROUTING_KEY_ROC = "roc-transfer-routingKey";
|
|
|
@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 Queue queuePlateTrade() {
|
return new Queue(QUEUE_TRADE_PLATE, true);
|
}
|
|
/**
|
* 交易订单处理
|
*
|
* @return
|
*/
|
@Bean
|
public Queue queueHandleTrade() {
|
return new Queue(QUEUE_HANDLE_TRADE, 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);
|
}
|
|
|
@Bean
|
public DirectExchange matchTradeExchange() {
|
return new DirectExchange(EXCHANGE_B);
|
}
|
|
/**
|
* 盘口变化绑定
|
*
|
* @return
|
*/
|
@Bean
|
public Binding bindingPlateTrade() {
|
return BindingBuilder.bind(queuePlateTrade()).to(matchTradeExchange()).with(RabbitMqConfig.ROUTINGKEY_TRADE_PLATE);
|
}
|
|
/**
|
* 交易订单处理
|
*
|
* @return
|
*/
|
@Bean
|
public Binding bindingHandleTrade() {
|
return BindingBuilder.bind(queueHandleTrade()).to(matchTradeExchange()).with(RabbitMqConfig.ROUTINGKEY_HANDLE_TRADE);
|
}
|
|
@Bean
|
public DirectExchange rocExchange() {
|
return new DirectExchange(EXCHANGE_ROC);
|
}
|
|
|
@Bean
|
public Queue rocQueue() {
|
return new Queue(QUEUE_ROC, true);
|
}
|
|
@Bean
|
public Binding bindingRoc() {
|
return BindingBuilder.bind(rocQueue()).to(rocExchange()).with(ROUTING_KEY_ROC);
|
}
|
|
}
|