package com.xcong.excoin.rabbit.consumer; import com.alibaba.fastjson.JSONArray; import com.rabbitmq.client.Channel; import com.xcong.excoin.configurations.RabbitMqConfig; import com.xcong.excoin.modules.contract.service.RabbitOrderService; import com.xcong.excoin.modules.contract.service.impl.OrderWebsocketServiceImpl; import com.xcong.excoin.rabbit.pricequeue.OrderModel; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.List; /** * APP和后台打包都开启 * * @author helius */ @Slf4j @Component @ConditionalOnProperty(prefix = "app", name = "rabbit-consumer", havingValue = "true") public class WebsocketPriceConsumer { @Resource OrderWebsocketServiceImpl orderWebsocketService; @Resource RabbitOrderService orderService; /** * 开多止盈 * * @param message 消息体 * @param channel 信道 */ @RabbitListener(queues = RabbitMqConfig.QUEUE_MOREPRO) public void onMessageMorePro(Message message, Channel channel) { String content = new String(message.getBody()); log.info("==message-price-consumer==我收到消息了开多止盈 : {}", content); List list = JSONArray.parseArray(content, OrderModel.class); // 开始处理 orderWebsocketService.dealOrderFromMq(list, 9); } // 1:买入委托2:开多3:开空4:平多5:平空6:爆仓平多7:爆仓平空8:撤单9:止盈平多10:止盈平空11:止损平多12:止损平空 /** * 开空止盈 * * @param message * @param channel */ @RabbitListener(queues = RabbitMqConfig.QUEUE_LESSPRO) public void onMessageLessPro(Message message, Channel channel) { String content = new String(message.getBody()); log.info("==message-price-consumer==我收到消息了开空止盈 : {}", content); // 开始处理 List list = JSONArray.parseArray(content, OrderModel.class); // 开始处理 orderWebsocketService.dealOrderFromMq(list, 10); } /** * 开多止损 * * @param message * @param channel */ @RabbitListener(queues = RabbitMqConfig.QUEUE_MORELOSS) public void onMessageMoreLoss(Message message, Channel channel) { String content = new String(message.getBody()); log.info("==message-price-consumer==我收到消息了开多止损 : {}", content); // 开始处理 List list = JSONArray.parseArray(content, OrderModel.class); // 开始处理 orderWebsocketService.dealOrderFromMq(list, 11); } /** * 开空止损 * * @param message * @param channel */ @RabbitListener(queues = RabbitMqConfig.QUEUE_LESSLOSS) public void onMessageLessLoss(Message message, Channel channel) { String content = new String(message.getBody()); log.info("==message-price-consumer==我收到消息了开空止损 : {}", content); // 开始处理 List list = JSONArray.parseArray(content, OrderModel.class); // 开始处理 orderWebsocketService.dealOrderFromMq(list, 12); } /** * 限价委托 * * @param message * @param channel */ @RabbitListener(queues = RabbitMqConfig.QUEUE_LIMIT) public void onMessageLimit(Message message, Channel channel) { String content = new String(message.getBody()); log.info("==message-price-consumer==我收到消息了限价委托 : {}", content); // 开始处理 List list = JSONArray.parseArray(content, OrderModel.class); // 开始处理 orderWebsocketService.dealForLimitMq(list); } /** * 爆仓消费者 * * @param message * @param channel */ @RabbitListener(queues = RabbitMqConfig.QUEUE_COINOUT) public void onMessageCoinout(Message message, Channel channel) { String content = new String(message.getBody()); log.info("==message-price-consumer==我收到消息了爆仓 : {}", content); // 开始处理 List list = JSONArray.parseArray(content, OrderModel.class); // 开始处理 orderWebsocketService.dealOrderFromMq(list, 6); } /** * 平仓 * * @param message * @param channel */ @RabbitListener(queues = RabbitMqConfig.QUEUE_CLOSETRADE) public void onMessageCloseTrade(Message message, Channel channel) { String content = new String(message.getBody()); log.info("==message-price-consumer==我收到消息了平仓: {}", content); // 订单 List ids = JSONArray.parseArray(content, Long.class); orderService.cancelHoldOrder(ids); } }