校验通过的短信,发送到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.service.SmsService;
import com.mashibing.api.service.sendCheck.SendCheckContext;
import com.mashibing.common.constant.RabbitMQConstant;
import com.mashibing.common.pojo.JsonResult;
import com.mashibing.common.pojo.StandardSubmit;
import com.mashibing.common.utils.JsonResultUtil;
import com.mashibing.common.utils.SnowFlakeUtil;
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.factory.annotation.Autowired;
import org.springframework.cloud.context.config.annotation.RefreshScope;
@ -41,6 +44,9 @@ public class SMSController {
@Autowired
SmsService smsService;
@Autowired
RabbitTemplate rabbitTemplate;
@PostMapping("singleSend")
public JsonResult singleSend(@RequestBody @Validated SingleSendRequest request, HttpServletRequest httpServletRequest) {
// 获取真实ip
@ -59,11 +65,13 @@ public class SMSController {
// 雪花算法生成唯一id
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.setCode(0);
singleSendResponse.setMsg("发送中。。。");
singleSendResponse.setMsg("接收成功");
singleSendResponse.setCount(1);
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.NoArgsConstructor;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
@ -17,7 +18,7 @@ import java.time.LocalDateTime;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class StandardSubmit {
public class StandardSubmit implements Serializable {
@Description("当前短信的唯一标识")
private Long sequenceId;

Loading…
Cancel
Save