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,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;
|
}
|
|
|
}
|