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 VipCreateTask VipCreateTask() { return new VipCreateTask(); } @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 taskList = new ArrayList<>(); //注册RabbitMq任务 taskList.add(new MqTask(MQ_EXCHANGE_A + evn, MQTaskRouting.CREATE_VIP + evn, MQTaskRouting.CREATE_VIP + evn, VipCreateTask())); //订阅模式 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,SalesOrderTask())); taskList.add(new MqTask(MQ_EXCHANGE_TOPIC + evn, MQTaskRouting.SALES_ORDER + evn,MQTaskRouting.CREATE_ORDER + evn,OrderrCreateTask())); taskList.add(new MqTask(MQ_EXCHANGE_TOPIC + evn, MQTaskRouting.SCORE_ORDER + evn,MQTaskRouting.CREATE_ORDER + evn,ScoreOrderTask())); rabiitMqTemplate.binding(taskList); return rabiitMqTemplate; } }