rabbitMQ 消息中间件
消息中间件
RabbitMQ : 适合中小型项目,代码量较少
ActiveMQ :apach旗下产品,并发处理不如rabbitMQ
RocketMQ : 阿里旗下,同时支持消息中间件事务和数据库事务
Kafka : 功能最弱
rabbitMQ安装
安装软件 Erlang -> rabbitmq
配置环境变量
新建 Erlang 环境变量: 变量名ERLANG_HOME , 变量值 -> erl文件目录路径

新建 rabbitmq 环境变量

配置 path : 新建两个变量 %ERLANG_HOME%\bin 和 %RABBITMQ_SERVER%\sbin。

开启 rabbitmq :win + R 键入命令: rabbitmq-server -detached
关闭 rabbitmq :win + R 键入命令: rabbitmqctl stop
简介
优点:
销峰:限流,使流量数据变平稳
解耦:降低程序耦合度
缺点:
系统开发复杂度提高
中间环节多,容易在运行期间出错
死信
不能被处理的消息
避免传入多条相同数据造成死信,可以使用幂等对数据进行判断
幂等:对同一个系统,使用同样的条件,一次请求和重复的多次请求对系统资源的影响是一致的
解决方式:
消息带上过期时间属性,如果超时就由服务器进行删除
springboot + rabbitmq
添加 jar包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
配置文件
spring:
rabbitmq:
host: 127.0.0.1
port: 5672
password: guest
username: guest
virtual-host: /
rabbitmq交换器
消费者消费一个消息,被消费的消息在队列中在还存不存在:
被消费的消息会被服务器从队列中删除
默认情况:只要消费者接受了消息,他马上就会删除消息
确定消息被正确消费,只有正确证明了这个消息才能把消息从队列删除。
采用手动确认的方式,数据不能丢失。自动确认模式可以丢失数据,性能更高
如果服务器死了,没有被消费的消息在服务器重启后,还是否存在:
spring封装,默认情况下,消息队列会持久化消息
direct(默认)直连交换机
精确匹配路由键
如果路由键匹配的话,消息就投递到相应的队列
topic 主题交换机
可以进行模糊匹配路由键
支持在路由键中使用通配符,# 匹配路由键中一个或多个词,* 匹配路由键的一个词

浙公网安备 33010602011771号