校验通过的短信,发送到mq给策略模块

main
heqijun 4 months ago
parent 5b81d000e2
commit b64530743e

@ -0,0 +1,28 @@
package com.mashibing.api.config;
import com.mashibing.common.constant.RabbitMQConstant;
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 heqijun
* @ClassName: RabbitMQConfig
* @Description: RabbitMQConfig
* @date 2025/6/7 17:07
*/
@Configuration
public class RabbitMQConfig {
/**
*
*
* @return
*/
@Bean
public Queue preSendQueue() {
return QueueBuilder.durable(RabbitMQConstant.SMS_PRE_SEND).build();
}
}

@ -0,0 +1,52 @@
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;
/**
* @author heqijun
* @ClassName: RabbitMQTemplateConfig
* @Description: RabbitMQTemplateconfirmreturn
* @date 2025/6/7 17:12
*/
@Configuration
@Slf4j
public class RabbitMQTemplateConfig {
@Bean
public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
//设置connectionFactory
RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
//配置confirm机制回调
rabbitTemplate.setConfirmCallback(new RabbitTemplate.ConfirmCallback() {
@Override
public void confirm(CorrelationData correlationData, boolean ack, String cause) {
//消息妹有发送到交换机
if (!ack) {
log.error("【接口模块-发送消息】消息没有发送到交换机。。。" +
"\n correlationData={},ack={},cause:{} ", correlationData, ack, cause);
}
}
});
//配置return机制回调
rabbitTemplate.setReturnCallback(new RabbitTemplate.ReturnCallback() {
@Override
public void returnedMessage(Message message, int replyCode, String replyText, String exchange, String routingKey) {
log.error("【接口模块-发送消息】消息没有路由到指定的队列。。。" +
"\nmessage={},exchange={},routingKey={}", new String(message.getBody()), exchange, routingKey);
}
});
return rabbitTemplate;
}
}

@ -4,11 +4,14 @@ import com.mashibing.api.pojo.SingleSendRequest;
import com.mashibing.api.pojo.SingleSendResponse; import com.mashibing.api.pojo.SingleSendResponse;
import com.mashibing.api.service.SmsService; import com.mashibing.api.service.SmsService;
import com.mashibing.api.service.sendCheck.SendCheckContext; import com.mashibing.api.service.sendCheck.SendCheckContext;
import com.mashibing.common.constant.RabbitMQConstant;
import com.mashibing.common.pojo.JsonResult; import com.mashibing.common.pojo.JsonResult;
import com.mashibing.common.pojo.StandardSubmit; import com.mashibing.common.pojo.StandardSubmit;
import com.mashibing.common.utils.JsonResultUtil; import com.mashibing.common.utils.JsonResultUtil;
import com.mashibing.common.utils.SnowFlakeUtil; import com.mashibing.common.utils.SnowFlakeUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.connection.CorrelationData;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.cloud.context.config.annotation.RefreshScope;
@ -41,6 +44,9 @@ public class SMSController {
@Autowired @Autowired
SmsService smsService; SmsService smsService;
@Autowired
RabbitTemplate rabbitTemplate;
@PostMapping("singleSend") @PostMapping("singleSend")
public JsonResult singleSend(@RequestBody @Validated SingleSendRequest request, HttpServletRequest httpServletRequest) { public JsonResult singleSend(@RequestBody @Validated SingleSendRequest request, HttpServletRequest httpServletRequest) {
// 获取真实ip // 获取真实ip
@ -59,11 +65,13 @@ public class SMSController {
// 雪花算法生成唯一id // 雪花算法生成唯一id
standardSubmit.setSequenceId(snowFlakeUtil.nextId()); standardSubmit.setSequenceId(snowFlakeUtil.nextId());
//TODO 发送到MQ // 发送到MQ
rabbitTemplate.convertAndSend(RabbitMQConstant.SMS_PRE_SEND, standardSubmit,
new CorrelationData(String.valueOf(standardSubmit.getSequenceId())));
SingleSendResponse singleSendResponse = new SingleSendResponse(); SingleSendResponse singleSendResponse = new SingleSendResponse();
singleSendResponse.setCode(0); singleSendResponse.setCode(0);
singleSendResponse.setMsg("发送中。。。"); singleSendResponse.setMsg("接收成功");
singleSendResponse.setCount(1); singleSendResponse.setCount(1);
return JsonResultUtil.ok(singleSendResponse); return JsonResultUtil.ok(singleSendResponse);
} }

@ -0,0 +1,15 @@
package com.mashibing.common.constant;
/**
* @author heqijun
* @ClassName: RabbitMQConstant
* @Description: RabbitMQConstant
* @date 2025/6/7 17:02
*/
public interface RabbitMQConstant {
/**
*
*/
String SMS_PRE_SEND = "sms_pre_send_topic";
}

@ -5,6 +5,7 @@ import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.time.LocalDateTime; import java.time.LocalDateTime;
/** /**
@ -17,7 +18,7 @@ import java.time.LocalDateTime;
@Data @Data
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class StandardSubmit { public class StandardSubmit implements Serializable {
@Description("当前短信的唯一标识") @Description("当前短信的唯一标识")
private Long sequenceId; private Long sequenceId;

Loading…
Cancel
Save