SpringBoot集成RabbitMQ实现用户注册的示例代码

网友投稿 747 2023-07-02

SpringBoot集成RabbitMQ实现用户注册的示例代码

SpringBoot集成RabbitMQ实现用户注册的示例代码

上一篇已经介绍了什么是rabbitmq以及和springboot集成方法,也介绍了springboot集成邮件的方式,不了解的可以先看以前写的文章。

三者集成

上一篇springboot集成邮件注册的已经介绍了,本篇文章基于这个介绍,我们只需要修改下面几处即可完成3者集成。

实现步骤

添加rabbitmq依赖

org.springframework.boot

spring-boot-starter-amqp

添加rabbitmq配置

spring:

rabbitmq:

addresses: 127.0.0.1

username: guest

password: guest

port: 5672

修改controller类

package com.lytw13.demohttp://.controller;

import com.lytw13.demo.model.TbUser;

import com.lytw13.demo.service.UserService;

import com.lytw13.demo.util.MailUtil;

import org.springframework.amqp.rabbit.annotation.RabbitListener;

import org.springframework.amqp.rabbit.core.RabbitTemplate;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.PostMapping;

import org.springframework.web.bind.annotation.RequestBody;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

@RestController

@RequestMapping("user")

public class UserController {

@Autowired

UserService userService;

@Autowired

RabbitTemplate rabbitTemplate;

@PostMapping("save")

public void save(@RequestBody TbUser user) {

userService.save(user);

rabbitTemplate.convertAndSend("email.direct","email.direct",user);

}

}

修改service实现类

public void save(TbUser user) {

long startTime = System.currentTimeMillis();

userMapper.insert(user);

long endTime = System.currentTimeMillis();

System.out.println("耗时:"+(endTime-startTime));

}

@RabbitListener(queues = "email.direct")

public void sendEmail(TbUser user) {

List fileList = new ArrayList<>();

fileList.add("E:\\others\\MyBlog\\新建文本文档1.txt");

fileList.add("E:\\others\\MyBlog\\新建文本文档.txt");

MailUtil.sendHtmlTemplateMail(user.getEmail(),user.getName(),fileList);

}

现在就完成了,当用户发送注册信息的时候,会推送给rabbitmq,然后我们只需要定义个方法添加上@RabbitListener(queues = "email.direct")注解进行实时监听, 注意主启动类上需要添加@EnableRabbit开启rabbit ,当监听到用户注册的时候,不需要一直等待发送邮件成功,就可以先OOWfPxbP将页面返回给用户,而不是一直等待,页面一直加载不了(浏览器一直转圈),使用户体验变差,这就是用rabbitmq实现异步操作的最简单用法

测试

这里就直接截个图,可以对比下上一篇同步串行用户注册发送邮件耗时。

具体代码我已经上传到了github,如果有问题可以参考下。前往

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringBoot项目执行脚本 自动拉取最新代码并重启的实例内容
下一篇:详解Spring基于xml的两种依赖注入方式
相关文章

 发表评论

暂时没有评论,来抢沙发吧~