2023年11月30日发(作者:)
消息协议AMQP及MQTT,STOMP,JMS的概念和基本理解
前⾔
简单理解
就是需要⼤家都遵守的 套规 。在计算机领域中,只要涉及不同的计算机之间要共同完成⼀
事情的时候,就肯定会有协议的存在,就像我们说话⽤某种语⾔⼀样,不 同的计算机之间必
须使⽤相同的语 才能进⾏通信
消息协议则是指⽤于实现消息队列功能时所涉及的协议。按照是否向⾏业开放消息规范⽂
档,可以将消息协议分为开放协议和私有协议。常见的开放协议有 AMQP, MQTT STOMP,XMPP 等。有些特殊框架(如 Red Kafka
ZeroMQ )根据⾃⾝需要未严格遵循 MQ 规范,⽽
是基于 TCP IP ⾃⾏封装了 协议,通过⽹ Socket 接⼝进⾏传输,实现了 MQ 的功能。这
的协议可以简 地理解成对双⽅通信 个约定,⽐如传过来 衍流数据,其中第
节表⽰什么, 字节表⽰什么,类似这样的约定。本章主要介绍常见的⼏种开放协议,
Message (消息):消息服务器所处理数据的原⼦单元。消息可以携带内容,从格式上看,消息包括 个内容头、 组属性和 个内容体
这⾥所说的消息可以对应到许多不同应⽤程序的实体,⽐如 个应⽤程序级消息、 个传输⽂件、 个数据流帧等。消息可以被保存到磁
盘上这样即使发⽣严重的⽹络故障、服务器崩溃 可确保投递。消息可以有优先级,⾼优先级的消息会在等待同 个消息队列时在低优先
级的消息之前发送,当消息必须被丢弃以确保消息服务器的服务质量时,服务器将会优先丢弃低优先级的消息 。消息服务器不能修改
所接收到的井将传递给消费者应⽤程序的消息容体。消息服务器可以在内容头中添加额外信息,但不能删除或修改现有信息。
Publisher (消息⽣产者)也是 个向交换器发布消息的客户端应⽤程序 对于java来说就是发送请求的那⼀段代码
(2)交换器的⽣命周期
每台 AMQP 务器都预先 建了许多交换器实例,它们在服务器启动时就存在并且不能被销毁 如果你的应⽤程序有特殊要求,则可以选择⾃
⼰创建交换器,并在完成⼯作后进⾏销毁
(3)队列的⽣命周期
这⾥主要有两种消 队列的⽣命周期,即持久化消息队列和临时消息队列。持久化消息队列可被 个消费者共享 不管是否有消费者接收,它们
⽹络连接( Network Connection ):⽹络连接 客户端连接到服务器时所使 有的底层传输协议,由该连接来负责提供有序的、可靠的
基于字节流的双向传输
应⽤消息( ppli cat ion Message ):应⽤消息指通过⽹络所传输的应⽤数据,该数据 般包括 题和负载两部分。
主题( Topic):主题题相当于应⽤消息的类型 ,消息订阅者订阅后,就会收到该主题的消 内容
负载( Payload): 负载指消息订阅者具体接收的内容
与其他消 协议相 同, STOMP 同样包含客户端和服务器,这⾥的客户端既可以是消息⽣产者,也可以是消息梢费者,⽽服务器就是消息数
据的⽬的地,所有消息都会被发送到服务器
STOMP 客户端和服务器之间的通信是基于 来实现的 每⼀ 都包括⼀ 表⽰命令
符串、⼀系列可选的 头条⽬和帧的数据内容。帧的数据格式如下
(1 ) 点对点模型在点对点( Point to int )模型中,应⽤程序由队列( Queue )、发送者( Sender )和接
(Receiver )组成。每条消息都被发送到⼀个特定的队列中,接收者从队列中获取消息( )。
按照、JMS 规范中所说的, ⼀个JMS 应⽤由如下⼏个部分组成。
JMS 客户端( JMS Client): 指发送和接收消息的 Java 程序
Message 接⼝(消息〉


发布评论