本博客讲述的是RabbitMQ基于AMQP协议的消息中间件,在互联网应用的开发中,RabbitMQ是确保消息发送和消费成功,设置消息有效期和延迟队列的一个重要的中间件。它的特点具有安全性、可用性、集群、多协议支持、可视化客户端等等。
关于他的详细介绍和作用就不一一赘述了,下面引用一个邮件发送的案例来加深理解。
搭建一个简单的邮件发送服务,需要用到的开发工具有IntelliJ IDEA,RabbitMQ、MySQL,Postman用来作为测试接口。
案例介绍:假如现在某公司新招聘了一批员工,需要给新员工发送入职欢迎邮件,我们要保证在邮件发送成功的基础上,不重复发送邮件,且需要监听邮件发送的进程。
案例分析:这是一个简单的邮件发送服务,需要用到消息中间件来监听消息队列,确保消息发送和消费的可靠性,并且要考虑到幂等性的问题 。
首先,我们开始搭建简单的邮件发送服务器。
小编用的是聚合工程,在旧项目中进行改进,下来小伙伴可以在一个工程中完成操作,原理相同。
一、项目基础搭建
1.1添加依赖
web、websocket、amqp、mysql-connector、mybatis、redis、mail
1.2application.properties
为贴近真实项目,这边的application.properties配置文件用到两个不同的server.port端口
配置文件如下:
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.url=jdbc:mysql:///vhr?serverTimezone=Asia/Shanghai
server.port=8081
spring.rabbitmq.virtual-host=/
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.host=192.168.64.128
spring.rabbitmq.port=5672
spring.rabbitmq.publisher-confirm-type=correlated
spring.rabbitmq.publisher-returns=true
这是我们项目的properties配置。
spring.rabbitmq.virtual-host=/
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.host=192.168.64.128
spring.rabbitmq.port=5672
这是邮件发送服务的properties配置。(默认server.port端口为8080)
二、搭建邮件服务
为了方便测试,添加新员工返回一段JSON
controller:
@RestController
@RequestMapping("/employee/basic")
public class EmployeeController {
@Autowired
EmployeeService employeeService;
/**
* 使用 JSON 格式传递参数
* @param employee @RequestBody
* @return
*/
@PostMapping("/addEmps")
public RespBean addEmps(@RequestBody Employee employee){
employeeService.addEmps(employee);
return RespBean.ok("添加成功");
}
}
当在springboot项目中登录成功后,post请求访问/employee/basic/addEmps时传递JSON格式的参数,即可完成数据添加。
实体类:
employee表实体类:
该表为插入员工的员工表,这里为了简化测试,只添加了两个字段。
public class Employee implements Serializable {
private Integer id;
private String name;
private String email;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {