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类
packagecom.lytw13.demo.controller; importcom.lytw13.demo.model.TbUser; importcom.lytw13.demo.service.UserService; importcom.lytw13.demo.util.MailUtil; importorg.springframework.amqp.rabbit.annotation.RabbitListener; importorg.springframework.amqp.rabbit.core.RabbitTemplate; importorg.springframework.beans.factory.annotation.Autowired; importorg.springframework.web.bind.annotation.PostMapping; importorg.springframework.web.bind.annotation.RequestBody; importorg.springframework.web.bind.annotation.RequestMapping; importorg.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("user") publicclassUserController{ @Autowired UserServiceuserService; @Autowired RabbitTemplaterabbitTemplate; @PostMapping("save") publicvoidsave(@RequestBodyTbUseruser){ userService.save(user); rabbitTemplate.convertAndSend("email.direct","email.direct",user); } }
修改service实现类
publicvoidsave(TbUseruser){ longstartTime=System.currentTimeMillis(); userMapper.insert(user); longendTime=System.currentTimeMillis(); System.out.println("耗时:"+(endTime-startTime)); } @RabbitListener(queues="email.direct") publicvoidsendEmail(TbUseruser){ ListfileList=newArrayList<>(); 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,如果有问题可以参考下。前往
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。