RabbitMQ
MQ
消息队列
是一种进程间通信或同一进程的不同线程间的通信方式
特点
MQ是消费者-生产者模型的一个典型的代表
AMQP协议
是应用层协议的一个开放标准,面向消息的中间级件设计
JMS协议
只能Java使用
优点
解耦
异步处理
流量削峰
中间件
系统A慢慢的按照数据库能处理的并发量,从消息队列中慢慢拉取数据。在生产中,这个短暂的高峰期积压是允许的
系统可用性降低,系统复杂性增加
使用较多的消息队列
rabbitmq
RocketMQ
ActiveMQ
Kafka
使用场景
当不需要立即获得结果,但是并发量又需要进行控制的时候,差不多就是需要使用消息队列的时候
为什么要使用RabbitMQ
基于AMQP协议
高并发(是一个容量的概念,服务器可以接受的最大任务数量)
高性能(是一个速度的概念,单位时间内服务器可以处理的任务数)
高可用(是一个持久的概念,单位时间内服务器可以正常工作的时间比例)
强大的社区支持,以及很多公司都在使用
支持插件
支持多语言
安装
1.安装Erlang
yum -y install esl-erlang_23.0.2-1_centos_7_amd64.rpm
检查erlang
输入命令erl
2.安装rabbitMQ
安装rabbitmq
yum -y install rabbitmq-server-3.8.5-1.el7.noarch.rpm
安装UI插件
rabbitmq-plugins enable rabbitmq_management
启动rabbitmq服务
systemctl start rabbitmq-server.service
检测服务
systemctl status rabbitmq-server.service
配置文件
cd /etc/rabbitmq/
vim rabbitmq.config
[{rabbit, [{loopback_users, []}]}].
重启服务
systemctl restart rabbitmq-server.service
访问
192.168.98.132:15672
常用队列
简答模式队列
简单队列-处理消息效率不高,吞吐量较低,不适合生成环境
工作模式队列Work queues
消息公平分发
工作队列-公平轮询分发-根据不同消费者机器硬件配置,消息处理速度不
同,收到的消息数量也不同,通常速度快的处理的消息数量比较多,最大化使用计
算机资源。适用于生成环境。
消息轮询分发
工作队列-消息轮询分发-消费者收到的消息数量平均分配,单位时间内消息
处理速度加快,提高了吞吐量。
消息的发布与订阅模式队列Publish/Subscribe
交换机
消息产生后不是直接投送到队列中,而是将消息先投送给交换机,然后消息经过交换机投递到相关队列
多个消费者消费的不再是同一个队列,而是每个消费者消费属于自己的队列
路由模式队列direct
私发
有一些不想别人看到,单独发
主题模式队列topic
远程过程调用模式队列RPC
声明队列
第一个参数queue:队列名称
第二个参数durable:是否持久化
第三个参数Exclusive:排他队列
如果一个队列被声明为排他队列,该队列仅对首次声明它的连接可见,并在连接断开时自动删除
注意:
1.排他队列是基于连接可见的,同一连接的不同通道是可以同时访问同一个连接创建的排他队列的
2.“首次”,如果一个连接已经声明了一个排他队列,其他连接是不允许建立同名的排他队列的,这个与普通队列不同
3.即使该队列是持久化的,一旦连接关闭或者客户端退出,该队列都会被自动删除的
第四个参数Auto-delete:自动删除,如果该队列没有任何订阅的消费者的话,该队列会被自动删除。
RabbitMQ
最新推荐文章于 2024-07-31 07:15:00 发布