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

 更新时间:2019年12月30日 14:16:34   作者:lytw1315  
这篇文章主要介绍了SpringBoot集成RabbitMQ实现用户注册的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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

三者集成

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

实现步骤

添加rabbitmq依赖

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

添加rabbitmq配置

spring:
 rabbitmq:
  addresses: 127.0.0.1
  username: guest
  password: guest
  port: 5672

修改controller类

package com.lytw13.demo.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<String> 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 ,当监听到用户注册的时候,不需要一直等待发送邮件成功,就可以先将页面返回给用户,而不是一直等待,页面一直加载不了(浏览器一直转圈),使用户体验变差,这就是用rabbitmq实现异步操作的最简单用法。

测试

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

 

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • JavaWeb项目Servlet无法访问问题解决

    JavaWeb项目Servlet无法访问问题解决

    这篇文章主要介绍了JavaWeb项目Servlet无法访问问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • 通过Java代码来创建view的方法

    通过Java代码来创建view的方法

    本文给大家分享通过java代码创建view的方法,以TextView为例创建控件的方法,需要的的朋友参考下吧
    2017-08-08
  • 基于jenkins发布编译后的class文件

    基于jenkins发布编译后的class文件

    这篇文章主要介绍了基于jenkins发布编译后的class文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Java this()和super()的使用注意

    Java this()和super()的使用注意

    这篇文章主要介绍了Java this()和super()的使用注意的相关资料,需要的朋友可以参考下
    2017-04-04
  • springboot 定时任务@Scheduled实现解析

    springboot 定时任务@Scheduled实现解析

    这篇文章主要介绍了springboot 定时任务@Scheduled实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Java线程的6种状态及切换教程

    Java线程的6种状态及切换教程

    这篇文章主要给大家介绍了关于Java线程的6种状态及切换教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Mybatis中@Param的用法和作用详解

    Mybatis中@Param的用法和作用详解

    这篇文章主要介绍了Mybatis中@Param的用法和作用,在文中给大家补充了spring中@param和mybatis中@param使用区别,需要的朋友可以参考下
    2017-09-09
  • java property配置文件管理工具框架过程详解

    java property配置文件管理工具框架过程详解

    这篇文章主要介绍了java property配置文件管理工具框架过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • lambda表达式解决java后台分组排序过程解析

    lambda表达式解决java后台分组排序过程解析

    这篇文章主要介绍了lambda表达式解决java后台分组排序过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • 浅谈PrintStream和PrintWriter的区别和联系

    浅谈PrintStream和PrintWriter的区别和联系

    这篇文章主要介绍了浅谈PrintStream和PrintWriter的区别和联系,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03

最新评论