ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

RabbitMQ-AMQP协议

2021-12-04 14:33:38  阅读:175  来源: 互联网

标签:协议 AMQP 队列 JMS RabbitMQ 命令 客户端


什么是AMQP协议

为了让消息在各个消息队列平台之间互融互通,最开始是通过JMS,通过JMS视同通过Java API的方式隐藏MQ产品供应商提供的实际接口,解决互通问题。从技术上讲java应用程序只需要针对JMS API编程选择适合的MQ驱动即可,

JMS会打理好其他部分,ActiveMQ就是JMS的实现。不过尝试使用单独标准化接口来胶合众多不同的接口最终会暴露出问题。使得应用程序变得更加脆弱。

2006年6月由于Cisco、Redhat、iMatix等联合制定了AMQP的公开标准,它是应用层协议的一个开放标准。rabbit就基于AMQP的关键协议进行实现。

AMQP架构模型 生产者通过routing key投递消息到exchage exchage根据routingKey与binding key映射 路由到投递到具体队列。

AMQP协议三层定义

AMQP协议本身包括三层。

Module Layer:位于协议最高层,主要定义了一些供客户端调用的命令,客户端可以利
用这些命令实现自己的业务逻辑。例如, 客户端可以使用Queue.Declare命令声明
一个队列或者使用Basic.Consume订阅消费一个队列中的消息。

Session Layer:位于中间层, 主要负责将客户端的命令发送给服务器, 再将服务端的应
答返回给客户端,主要为客户端与服务器之间的通信提供可靠性同步机制和错误处理。


Transport Layer:位于最底层,主要传输二进制数据流,提供帧的处理、信道复用、错
误检测和数据表示等。


AMQP说到底还是一个通信协议, 通信协议都会涉及报文交互, 从low-level举例来说,
AMQP本身是应用层的协议, 其填充于TCP协议层的数据部分。而从high-level来说, AMQP
是通过协议命令进行交互的。AM QP协议可以看作一系列结构化命令的集合, 这里的命令代表
一种操作, 类似于HTTP中的方法(GET、POST、PUT、DELETE等) 。

 

 

标签:协议,AMQP,队列,JMS,RabbitMQ,命令,客户端
来源: https://www.cnblogs.com/LQBlog/p/15641870.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有