产生消息队列(Message Queue 以下简称MQ)的原因:
不同进程(process)之间传递消息时,两个进程之间耦合程度过高,改动一个进程,引发必须修改另一个进程,为了隔离这两个进程,在两进程间抽离出一层(一个模块),所有两进程之间传递的消息,都必须通过消息队列来传递,单独修改某一个进程,不会影响另一个;
不同进程(process)之间传递消息时,为了实现标准化,将消息的格式规范化了,并且,某一个进程接受的消息太多,一下子无法处理完,并且也有先后顺序,必须对收到的消息进行排队,因此诞生了事实上的消息队列;
MQ框架非常之多,比较流行的有RabbitMq、ActiveMq、ZeroMq、kafka,以及阿里开源的RocketMQ。
RabbitMQ在使用前需要安装Erlang编程语言(http://www.erlang.org/download/otp_win64_17.3.exe)
RabbitMQ消息中间件下载(http://www.rabbitmq.com/download.html)
win下MQ安装后需要下载MQ管理插件,在CMD中进入MQ安装路径中使用命令:rabbitmq-plugins enable rabbitmq_management
然后在进行命令启动:
停止:net stop RabbitMQ
启动:net start RabbitMQ
浏览器输入127.0.0.0:15672进入MQ界面
在springboot项目中整合RabbitMQ
需要导入maven依赖
在application.yml配置文件中配置MQ连接信息
添加我们需要的队列并且配置MQ转发和过期机制
生产者产生并发送消息。设置过期时间5秒,如果5秒内没有有消费者去读取这条消息,那么这条消息就会自动进入我们配置的过期队列中
我们可以用idea启动两个服务,一个用于生产者发送消息,一个用于消费者读取队列消息
测试结果:
然后我们可以把消费者服务关闭,生产者再次发送消息到队列中
因为我们设置的超时时间为5秒,所以队列中消息5秒内没有被消费者读取就既然超时队列中
附带参考链接:https://blog.csdn.net/hellozpc/article/details/81436980