diff --git a/beacon-api/pom.xml b/beacon-api/pom.xml
index e89af55..f838bda 100644
--- a/beacon-api/pom.xml
+++ b/beacon-api/pom.xml
@@ -28,11 +28,6 @@
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
-
-
- org.springframework.cloud
- spring-cloud-starter-openfeign
-
org.springframework.boot
diff --git a/beacon-api/src/main/java/com/mashibing/api/config/RabbitMQConfig.java b/beacon-api/src/main/java/com/mashibing/api/config/RabbitMQConfig.java
new file mode 100644
index 0000000..a0f0470
--- /dev/null
+++ b/beacon-api/src/main/java/com/mashibing/api/config/RabbitMQConfig.java
@@ -0,0 +1,26 @@
+package com.mashibing.api.config;
+
+import com.mashibing.common.constant.RabbitMQConstants;
+import org.springframework.amqp.core.Queue;
+import org.springframework.amqp.core.QueueBuilder;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 构建队列&交换机信息
+ * @author zjw
+ * @description
+ */
+@Configuration
+public class RabbitMQConfig {
+
+ /**
+ * 接口模块发送消息到策略模块的队列
+ * @return
+ */
+ @Bean
+ public Queue preSendQueue(){
+ return QueueBuilder.durable(RabbitMQConstants.SMS_PRE_SEND).build();
+ }
+
+}
diff --git a/beacon-api/src/main/java/com/mashibing/api/config/RabbitTemplateConfig.java b/beacon-api/src/main/java/com/mashibing/api/config/RabbitTemplateConfig.java
new file mode 100644
index 0000000..82a1911
--- /dev/null
+++ b/beacon-api/src/main/java/com/mashibing/api/config/RabbitTemplateConfig.java
@@ -0,0 +1,55 @@
+package com.mashibing.api.config;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.rabbit.connection.ConnectionFactory;
+import org.springframework.amqp.rabbit.connection.CorrelationData;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 设置RabbitTemplate的confirm&return机制
+ * @author zjw
+ * @description
+ */
+@Configuration
+@Slf4j
+public class RabbitTemplateConfig {
+
+ @Bean
+ public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory){
+ //1、构建RabbitTemplate对象
+ RabbitTemplate rabbitTemplate = new RabbitTemplate();
+
+ //2、设置connectionFactory
+ rabbitTemplate.setConnectionFactory(connectionFactory);
+
+ //3、配置confirm机制
+ rabbitTemplate.setConfirmCallback(new RabbitTemplate.ConfirmCallback(){
+
+ @Override
+ public void confirm(CorrelationData correlationData, boolean ack, String cause) {
+ // ack为false,代表消息没有发送到exchange。
+ if(!ack){
+ log.error("【接口模块-发送消息】 消息没有发送到交换机,correlationData = {},cause = {}",correlationData,cause);
+ }
+ }
+ });
+
+ //4、配置return机制
+ rabbitTemplate.setReturnCallback(new RabbitTemplate.ReturnCallback(){
+
+ // 触发这个回调,说明交换机没有把消息路由到指定的队列中
+ @Override
+ public void returnedMessage(Message message, int replyCode, String replyText, String exchange, String routingKey) {
+ log.error("【接口模块-发送消息】 消息没有路由到指定的Queue。 message = {},exchange = {},routingKey = {}",
+ new String(message.getBody()),exchange,routingKey);
+ }
+ });
+
+ //5、返回
+ return rabbitTemplate;
+ }
+
+}
diff --git a/beacon-api/src/main/java/com/mashibing/api/controller/SmsController.java b/beacon-api/src/main/java/com/mashibing/api/controller/SmsController.java
index df34920..27ad4b5 100644
--- a/beacon-api/src/main/java/com/mashibing/api/controller/SmsController.java
+++ b/beacon-api/src/main/java/com/mashibing/api/controller/SmsController.java
@@ -4,11 +4,14 @@ import com.mashibing.api.filter.CheckFilterContext;
import com.mashibing.api.form.SingleSendForm;
import com.mashibing.api.util.R;
import com.mashibing.api.vo.ResultVO;
+import com.mashibing.common.constant.RabbitMQConstants;
import com.mashibing.common.enums.ExceptionEnums;
import com.mashibing.common.model.StandardSubmit;
import com.mashibing.common.util.SnowFlakeUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
+import org.springframework.amqp.rabbit.connection.CorrelationData;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
@@ -34,6 +37,9 @@ public class SmsController {
@Autowired
private SnowFlakeUtil snowFlakeUtil;
+ @Autowired
+ private RabbitTemplate rabbitTemplate;
+
/**
* 客户端IP地址的请求头信息,多个用','隔开。
@@ -89,6 +95,9 @@ public class SmsController {
submit.setSequenceId(snowFlakeUtil.nextId());
//=========================发送到MQ,交给策略模块处理=========================================
+ rabbitTemplate.convertAndSend(RabbitMQConstants.SMS_PRE_SEND,submit,new CorrelationData(submit.getSequenceId().toString()));
+
+ // =====================没有问题,返回接收成功===============================
return R.ok();
}
diff --git a/beacon-api/src/main/java/com/mashibing/api/controller/TestController.java b/beacon-api/src/main/java/com/mashibing/api/controller/TestController.java
index 745a856..8ad56da 100644
--- a/beacon-api/src/main/java/com/mashibing/api/controller/TestController.java
+++ b/beacon-api/src/main/java/com/mashibing/api/controller/TestController.java
@@ -15,9 +15,11 @@ public class TestController {
@Autowired
private CheckFilterContext checkFilterContext;
- @GetMapping("/api/test")
+
+ @GetMapping("/test/api")
public void test(){
System.out.println("====================================");
checkFilterContext.check(null);
}
+
}
diff --git a/beacon-api/src/main/resources/bootstrap.yml b/beacon-api/src/main/resources/bootstrap.yml
index 8a8837c..0e646aa 100644
--- a/beacon-api/src/main/resources/bootstrap.yml
+++ b/beacon-api/src/main/resources/bootstrap.yml
@@ -16,3 +16,4 @@ spring:
file-extension: yml
# beacon-api-dev.yml
+
diff --git a/beacon-common/src/main/java/com/mashibing/common/constant/RabbitMQConstants.java b/beacon-common/src/main/java/com/mashibing/common/constant/RabbitMQConstants.java
new file mode 100644
index 0000000..e84dbae
--- /dev/null
+++ b/beacon-common/src/main/java/com/mashibing/common/constant/RabbitMQConstants.java
@@ -0,0 +1,14 @@
+package com.mashibing.common.constant;
+
+/**
+ * RabbitMQ中的一些队列信息
+ * @author zjw
+ * @description
+ */
+public interface RabbitMQConstants {
+
+ /**
+ * 接口模块发送消息到策略模块的队列名称
+ */
+ String SMS_PRE_SEND = "sms_pre_send_topic";
+}
diff --git a/beacon-common/src/main/java/com/mashibing/common/model/StandardSubmit.java b/beacon-common/src/main/java/com/mashibing/common/model/StandardSubmit.java
index 34240e7..b11d03e 100644
--- a/beacon-common/src/main/java/com/mashibing/common/model/StandardSubmit.java
+++ b/beacon-common/src/main/java/com/mashibing/common/model/StandardSubmit.java
@@ -4,6 +4,7 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
+import java.io.Serializable;
import java.time.LocalDateTime;
/**
@@ -15,7 +16,7 @@ import java.time.LocalDateTime;
@Data
@NoArgsConstructor
@AllArgsConstructor
-public class StandardSubmit {
+public class StandardSubmit implements Serializable {
/**
* 针对当前短信的唯一标识,雪花算法
diff --git a/pom.xml b/pom.xml
index 63f69d5..22f4bd1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,6 +49,11 @@
pom
import
+
+ org.springframework.boot
+ spring-boot-starter-amqp
+ 2.6.3
+