1、环境搭建
引入RabbitMq的依赖
<!-- rabbit-mq -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
改写配置文件
spring:
rabbitmq:
host: 127.0.0.1 #主机名
port: 5672 #rabbitmq应用访问端口号
username: root #用户名和密码
password: root
virtual-host: / #虚拟主机
注入RabbitTemplate
@Autowired
private RabbitTemplate rabbitTemplate;
调用convertSendAndReceive方法
/**
* 发送验证码
* @param mobileOrEmail
*/
@RequestMapping("/sendMobileCode")
@ResponseBody
public void sendMobileCode(@RequestParam String mobileOrEmail){
rabbitTemplate.convertSendAndReceive("mobileCode",mobileOrEmail);
}
编写RabbitMqConfig配置类
@Component
public class RabbitMqConfig {
@Autowired
private RedisTemplate<String ,String > redisTemplate;
@Autowired
private JavaMailSender javaMailSender;
@RabbitListener(queues = "mobileCode")
public void sendMobileCode(String mobile){
System.out.println("接收到的手机号:"+mobile);
//生成验证码
Random random = new Random();
int code = random.ints(100000, 1000000).findAny().getAsInt();
//发送短信
MsgUtils.sendMsg(mobile,code+"");
//将生成的验证码存入到redis中
redisTemplate.boundValueOps(mobile).set(code+"",1, TimeUnit.MINUTES);
}
@RabbitListener(queues = "emailCode")
public void sendEmailCode(String email){
System.out.println("接收到的邮箱号:"+email);
//生成验证码
Random random = new Random();
int code = random.ints(100000, 1000000).findAny().getAsInt();
//写信
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
//收件人 发件人 主题 内容
simpleMailMessage.setTo(email);
simpleMailMessage.setFrom("xxxx@xx.com");
simpleMailMessage.setSubject("【陌影网络】您的验证码");
simpleMailMessage.setText("您本次登录的验证码是:"+code);
//执行发邮件
javaMailSender.send(simpleMailMessage);
//将生成的验证码存入到redis中
redisTemplate.boundValueOps(email).set(code+"",1, TimeUnit.MINUTES);
}
}
里面涉及到的redis操作
引入redis依赖
<!-- redis依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
改写配置文件
spring:
redis:
host: 127.0.0.1