消息队列-协议类型/规范
【摘要】 前面讲了消息队列MQ的一些基础概念,是什么,能做什么,会带来什么问题,今天主要分享消息队列支持的协议。消息队列协议JMSAMQP对比方向JMSAMQP定义Java API协议跨语言否是跨平台否是支持消息类型提供两种消息模型:①Peer-2-Peer;②Pub/sub提供了五种消息模型:①direct exchange;②fanout exchange;③topic change;④heade...
前面讲了消息队列MQ的一些基础概念,是什么,能做什么,会带来什么问题,今天主要分享消息队列支持的协议。
消息队列协议
- JMS
- AMQP
对比方向 | JMS | AMQP |
---|---|---|
定义 | Java API | 协议 |
跨语言 | 否 | 是 |
跨平台 | 否 | 是 |
支持消息类型 | 提供两种消息模型:①Peer-2-Peer;②Pub/sub | 提供了五种消息模型:①direct exchange;②fanout exchange;③topic change;④headers exchange;⑤system exchange。本质来讲,后四种和 JMS 的 pub/sub 模型没有太大差别,仅是在路由机制上做了更详细的划分; |
支持消息类型 | StreamMessage:Java 原始值的数据流 MapMessage:一套名称-值对 TextMessage:一个字符串对象 ObjectMessage:一个序列化的 Java 对象 BytesMessage:一个字节的数据流 |
byte[](二进制) |
// todo AMQP的几种消息模型的具体说明
总结:
- AMQP为消息定义了线路层的协议,JMS定义API规范。在java体系中,多个client均可以通过JMS进行交互,跨平台较差,而AMQP天然跨平台、跨语言。
- JMS支持五种消息类型,而AMQP仅支持byte[]消息类型(序列化)
- 由于Exchange提供的路由算法,AMQP可以提供多样化的路由方式来传递消息,而JSM仅支持 队列和 主题/订阅 两种方式
RPC和消息队列的区别
RPC和消息队列都是分布式微服务系统中重要的组件,但是两者作用不同,不能互相替代
- 从用途来看:RPC主要用来解决两个服务的通信问题,RPC可调用远程计算机上某个服务的方法,这个过程就像调用本地方法一样。MQ消息队列主要用来降低系统耦合性、事项任务异步、流量削峰。
- 从通信方式来看:RPC是双向直接网络通讯,MQ消息队列是单向引入中间载体的网络通讯。
- 从架构上来看:RPC是双向直接通讯,无需存储消息。MQ消息队列是将消息存储起来。
- 从请求处理的时效性来看:通过RPC发出的调用一般会立即处理,存放在消息队列中的消息并不一定会立即处理。
// RPC的具体内容以及实现方式
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)