1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-16 18:10:13 +08:00
This commit is contained in:
TommyMerlin 2021-06-11 11:04:08 +08:00
parent 89ef66291c
commit d533a76f4f

View File

@ -46,7 +46,7 @@
![解耦](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-11/消息队列-解耦.png)
生产者(客户端)发送消息到消息队列中去,接受者(服务端)处理消息,需要消费的系统直接去消息队列取消息进行消费即可而不需要和其他系统有耦合, 这显然也提高了系统的扩展性。
生产者(客户端)发送消息到消息队列中去,接受者(服务端)处理消息,需要消费的系统直接去消息队列取消息进行消费即可而不需要和其他系统有耦合,这显然也提高了系统的扩展性。
**消息队列使利用发布-订阅模式工作,消息发送者(生产者)发布消息,一个或多个消息接受者(消费者)订阅消息。** 从上图可以看到**消息发送者(生产者)和消息接受者(消费者)之间没有直接耦合**,消息发送者将消息发送至分布式消息队列即结束对消息的处理,消息接受者从分布式消息队列获取该消息后进行后续处理,并不需要知道该消息从何而来。**对新增业务,只要对该类消息感兴趣,即可订阅该消息,对原有系统和业务没有任何影响,从而实现网站业务的可扩展性设计**。
@ -98,14 +98,14 @@ JMS 定义了五种不同的消息正文格式,以及调用的消息类型,
### 4.2 AMQP
AMQP即 Advanced Message Queuing Protocol一个提供统一消息服务的应用层标准 **高级消息队列协议**(二进制应用层协议),是应用层协议的一个开放标准,为面向消息的中间件设计,兼容 JMS。基于此协议的客户端与消息中间件可传递消息并不受客户端/中间件同产品,不同的开发语言等条件的限制。
AMQP即 Advanced Message Queuing Protocol一个提供统一消息服务的应用层标准 **高级消息队列协议**(二进制应用层协议),是应用层协议的一个开放标准为面向消息的中间件设计,兼容 JMS。基于此协议的客户端与消息中间件可传递消息并不受客户端/中间件同产品,不同的开发语言等条件的限制。
**RabbitMQ 就是基于 AMQP 协议实现的。**
### 4.3 JMS vs AMQP
| 对比方向 | JMS | AMQP |
| :----------- | --------------------------------------: | :----------------------------------------------------------: |
| :----------- | :-------------------------------------- | :----------------------------------------------------------- |
| 定义 | Java API | 协议 |
| 跨语言 | 否 | 是 |
| 跨平台 | 否 | 是 |