| package com.matrix.config; | 
|   | 
|   | 
| import com.matrix.component.rabbitmq.MqTask; | 
| import com.matrix.component.rabbitmq.RabiitMqTemplate; | 
| import com.matrix.component.rabbitmq.RabiitMqTemplateFactory; | 
| import com.matrix.core.tools.LogUtil; | 
| import com.matrix.system.shopXcx.mqTask.*; | 
| import com.matrix.system.wechart.templateMsg.Task.UniformMsgSentTask; | 
| import org.springframework.beans.factory.annotation.Value; | 
| import org.springframework.context.annotation.Bean; | 
| import org.springframework.context.annotation.Configuration; | 
|   | 
| import java.io.IOException; | 
| import java.util.ArrayList; | 
| import java.util.List; | 
|   | 
| @Configuration | 
| public class RabbitMqConfig { | 
|   | 
|     @Value("${rabbitmq.host}") | 
|     private String host; | 
|   | 
|     @Value("${rabbitmq.port}") | 
|     private int port; | 
|   | 
|     @Value("${rabbitmq.username}") | 
|     private String username; | 
|   | 
|     @Value("${rabbitmq.password}") | 
|     private String password; | 
|   | 
|     @Value("${evn}") | 
|     private String evn; | 
|   | 
|     public static final String MQ_EXCHANGE_A = "hive_exchange_A"; | 
|   | 
|     //订阅模式 | 
|     public static final String MQ_EXCHANGE_TOPIC = "hive_exchange_fanout"; | 
|   | 
|     @Bean | 
|     ScoreOrderTask ScoreOrderTask() { | 
|         return new ScoreOrderTask(); | 
|     } | 
|   | 
|   | 
|   | 
|     @Bean | 
|     OrderTask OrderrCreateTask() { | 
|         return new OrderTask(); | 
|     } | 
|     @Bean | 
|     SalesOrderTask SalesOrderTask() { | 
|         return new SalesOrderTask(); | 
|     } | 
|     @Bean | 
|     SalesOrderRefundTask SalesOrderRefundTask() { | 
|         return new SalesOrderRefundTask(); | 
|     } | 
|   | 
|     @Bean | 
|     TemplateMsgTask TemplateMsgTask(){ | 
|         return new TemplateMsgTask(); | 
|     } | 
|   | 
|   @Bean | 
|   UniformMsgSentTask UniformMsgSentTask(){ | 
|         return new UniformMsgSentTask(); | 
|     } | 
|   | 
|     @Bean | 
|     OrderOutSotoreTask OrderOutSotoreTask(){ | 
|         return new OrderOutSotoreTask(); | 
|     } | 
|   | 
|   | 
|     @Bean | 
|     public RabiitMqTemplate rabiitMqTemplate() throws IOException { | 
|         LogUtil.info("rabbitmq: {}, {}, {}, {}", host, port, username, password); | 
|         RabiitMqTemplate rabiitMqTemplate = RabiitMqTemplateFactory.buildTemplate(host, port, username, password); | 
|   | 
|         //声明一个交换机 | 
|         rabiitMqTemplate.exchangeDeclare(MQ_EXCHANGE_A+evn, "direct"); | 
|         rabiitMqTemplate.exchangeDeclare(MQ_EXCHANGE_TOPIC +evn, "topic"); | 
|   | 
|         List<MqTask> taskList = new ArrayList<>(); | 
|   | 
|         //注册RabbitMq任务 | 
|         taskList.add(new MqTask(MQ_EXCHANGE_A + evn, MQTaskRouting.SEND_TEMPLATE_MSG + evn,MQTaskRouting.SEND_TEMPLATE_MSG + evn, TemplateMsgTask())); | 
|         taskList.add(new MqTask(MQ_EXCHANGE_A + evn, MQTaskRouting.ORDER_OUT_SOTORE + evn,MQTaskRouting.ORDER_OUT_SOTORE + evn, OrderOutSotoreTask())); | 
|         taskList.add(new MqTask(MQ_EXCHANGE_A + evn, MQTaskRouting.SEND_UNIFORM_TEMPLATE_MSG + evn,MQTaskRouting.SEND_UNIFORM_TEMPLATE_MSG + evn, UniformMsgSentTask())); | 
|         taskList.add(new MqTask(MQ_EXCHANGE_A + evn, MQTaskRouting.SHOP_ORDER_REFUND + evn,MQTaskRouting.SHOP_ORDER_REFUND + evn, SalesOrderRefundTask())); | 
|   | 
|         //不同任务在不同的队列,但是routingKey一样则可以收到生产者消息 | 
|         taskList.add(new MqTask(MQ_EXCHANGE_TOPIC + evn, MQTaskRouting.CREATE_ORDER + evn,MQTaskRouting.CREATE_ORDER + evn,OrderrCreateTask())); | 
|         taskList.add(new MqTask(MQ_EXCHANGE_TOPIC + evn, MQTaskRouting.SALES_ORDER + evn,MQTaskRouting.CREATE_ORDER + evn,SalesOrderTask())); | 
|         taskList.add(new MqTask(MQ_EXCHANGE_TOPIC + evn, MQTaskRouting.SCORE_ORDER + evn,MQTaskRouting.CREATE_ORDER + evn,ScoreOrderTask())); | 
|   | 
|   | 
|         rabiitMqTemplate.binding(taskList); | 
|   | 
|         return rabiitMqTemplate; | 
|     } | 
|   | 
|   | 
| } |