消息队列-协议类型/规范

举报
object 发表于 2024/03/29 17:13:27 2024/03/29
【摘要】 前面讲了消息队列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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。