-
优点
- 通过异步处理提高系统性能(减少响应所需时间)。
- 削峰/限流
- 降低系统耦合性。
-
缺点:
- 系统可用性降低
- 系统复杂性提高
- 一致性问题
JMS
-
java的消息服务(API是一个消息服务的标准或者说是规范)
-
可以实现异步的消息传输
-
优点
- 使分布式的耦合度更低
- 消息服务更加可靠
- 异步性
-
ActiveMQ实现的基础
-
消息模式
- 点对点(P2P)模型
- Queue作为载体
- 满足生产者和消费者模式
- 一条消息只能被一个消费者使用,未被消费的消息在队列中保留直到被消费或超时
- 发布订阅(Pub/sub)
- 主题(Topic)作为消息通信载体
- 类似于广播模式
- 该消息通过主题传递给所有的订阅者,在一条消息广播之后才订阅的用户则是收不到该条消息的
- 点对点(P2P)模型
-
消息正文格式(五种)
- StreamMessage – Java原始值的数据流
- MapMessage–一套名称-值对
- TextMessage–一个字符串对象
- ObjectMessage–一个序列化的 Java对象
- BytesMessage–一个字节的数据流
AMQP
-
一个提供统一消息服务的应用层标准 高级消息队列协议(二进制应用层协议)
-
兼容 JM
-
基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件同产品,不同的开发语言等条件的限制
-
是RabbitMQ实现的基础
JMS vs AMQP
| 对比方向 | JMS | AMQP |
|---|---|---|
| 定义 | Java API | 协议 |
| 跨语言 | 否 | 是 |
| 跨平台 | 否 | 是 |
| 支持消息类型 | 提供两种消息模型:①Peer-2-Peer;②Pub/sub | 提供了五种消息模型:①direct exchange;②fanout exchange;③topic change;④headers exchange;⑤system exchange。本质来讲,后四种和JMS的pub/sub模型没有太大差别,仅是在路由机制上做了更详细的划分; |
| 支持消息类型 | 支持多种消息类型 ,我们在上面提到过 | byte[](二进制) |
本文介绍了消息队列的主要优点,如通过异步处理提高系统性能、削峰填谷及降低系统耦合性。同时讨论了其可能带来的问题,包括系统可用性降低、复杂性提高和一致性挑战。文章详细对比了JMS与AMQP两种不同标准的特点,以及它们所支持的消息模型与消息格式。
1285

被折叠的 条评论
为什么被折叠?



