消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,由消息系统来确保消息的可靠传递。消息发布者只管把消息发布到 MQ 中而不用管谁来取,消息使用者只管从 MQ 中取消息而不管是谁发布的。这样发布者和使用者都不用知道对方的存在
rabbitmq是一个开源的消息代理和队列服务器,通过普通的协议(Amqp协议)来完成不同应用之间的数据共享
(消费生产和消费者可以跨语言平台)rabbitmq是通过elang语言来开发的基于amqp协议
RabbitMQ、Kafka、RockectMQ、ActiveMQ
一般业务系统之间通信就是会采用RabbitMQ/RocketMQ,需要复杂的消息路由功能的支撑;
大数据的实时计算场景才会采用Kafka,Kafka定位主要是日志,设计初衷就是处理日志,可以看作一个日志(消息)系统的一个重要组件,针对性较强;
特性 | RabbitMQ | Kafka | RockectMQ | ActiveMQ |
---|---|---|---|---|
编写语言 | Erlang编写 | |||
可用性 | 主从 | 分布式 | 分布式 | 主从 |
持久化 | 内存、文件 | 分布式 | 磁盘文件 | 内存、文件、数据库 |
事务 | 不支持 | 支持 | 支持 | |
可视化管理 | 友好 | 有web console实现 |
官网=》》官网指路
Simple Work Queue (简单工作队列):也就是常说的点对点模式,一条消息由一个消费者进行消费。(当有多个消费者时,默认使用轮训机制把消息分配给消费者);
生产者->队列->消费者,没有交换机
Work Queues (工作队列):在工人之间分配任务(竞争消费者模式)、也叫公平队列,能者多劳的消息队列模型。队列必须接收到来自消费者的 手动ack 才可以继续往消费者发送消息;
一个队列是可以多个生产者,也可以有多个消费者来竞争消费消息,但是我们仍需保证队列的幂等性,队列存在就不能再创建同名队列
Publish/Subscribe (发布订阅模式):一条消息被多个消费者消费
生产者->交换机->(多个)队列->消费者
Routing(路由模式):有选择的接收消息
Topics (主题模式):通过一定的规则来选择性的接收消息,基于Topic接收消息
RPC 模式:发布者发布消息,并且通过 RPC 方式等待结果,应该场景少,
PS:官网最后是 Publisher Confirms 消息确认机制,指的是生产者如何发送可靠的消息
工作模式与交换机
消息模式 | 交换机 |
---|---|
Simple Work Queue-简单工作队列\Work Queues-工作队列 | 空交换机 |
Publish/Subscribe(发布订阅模式) | fanout 扇形交换机 |
Routing-路由模式 | direct 直连交换机 |
Topics-主题模式 | topic 主题交换机 |
通过brew安装,输入命令
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
选择下载源,确认后,会提示输入电脑密码,之后进入下载,过程较长,等待的时候可以去做其他的事儿啦;
按照提示依次执行以下命令
//使配置立即生效
source /Users/zhxy/.profile
出现如图提示,就已经成功安装啦
如果忘记账号密码,需要新增一个管理员账号,然后进去修改账号密码
在服务器上运行以下命令即可:
rabbitmqctl add_user newadmin newpassword
rabbitmqctl set_user_tags newadmin administrator
rabbitmqctl set_permissions -p / newadmin "." "." ".*"
newadmin为新管理员账号,可以自行命名
newpassword为密码
上面配置完成后,需要关闭终端窗口,重新打开,或者重新打开一个终端窗口,输入下面命令即可启动RabbitMQ服务:
rabbitmq-server
浏览器输入localhost:15672,账号密码全输入guest即可登录,或者输入自己创建的用户名、密码