AMQP是一种使用广泛的独立于语言的消息协议,它的全称是Advanced Message Queuing Protocol,即高级消息队列协议,它定义了一种二进制格式的消息流,任何编程语言都可以实现该协议。实际上,Artemis也支持AMQP,但实际应用最广泛的AMQP服务器是使用Erlang编写的RabbitMQ。
安装RabbitMQ
我们先从RabbitMQ的官网下载并安装RabbitMQ,安装和启动RabbitMQ请参考官方文档。要验证启动是否成功,可以访问RabbitMQ的管理后台http://localhost:15672,如能看到登录界面表示RabbitMQ启动成功:
RabbitMQ后台管理的默认用户名和口令均为 guest,guest用户只是被容许从localhost访问 生产环境的记得修改新增后台管理的账户跟密码
RabbitMQ的基本消息类型
1、Hello Wold 简单模式(普通消息)
生产者-消息队列-消费者
注意:当程序出现异常时,手动进行ACK,
2、Work queues 工作队列模式 ,在工人之间分配任务(竞争消费者模式)
生产者-消息队列-多个消费者
注意:默认开启的是轮询模式,设置每个消费者同时只能处理一条消息,这样子就快劳多得
image.png
消息队列ACK
image.png
3、Publish/Subscribe发布订阅模式,一次向多个消费者发送消息
交换机:RabbitMQ 消息传递模型的核心思想是生产者从不直接向队列发送任何消息。实际上,生产者经常甚至根本不知道消息是否会被传送到任何队列。相反,生产者只能将消息发送到交换机。交换是一件非常简单的事情。一方面它接收来自生产者的消息,另一方面将它们推送到队列中。交换机必须确切地知道如何处理它收到的消息。它应该附加到特定队列吗?它应该附加到许多队列中吗?或者它应该被丢弃。其规则由交换类型定义。
image.png
有几种可用的交换机类型:direct、topic、headers 和fanout。
4、Routing 路由模式
image.png
5、Topics 主题模式
6、Publisher Confirms 发布确认模式
注意:交换机通道持久化,队列持久化,消息持久化 保证异常情况下消息还能保存
网友评论