网站开发绩效考核与薪酬,网站建设流程共有几个阶段,wordpress旅行社,wordpress新建功能页面协议很常见#xff0c;只要是通信#xff0c;就会用到协议#xff0c;就像我们说话的语言一样#xff0c;不同的语言连通着不同的人群。 所以说#xff0c;消息队列也是一样#xff0c;想要互相通信#xff0c;就要使用同一种协议。 每个协议下的消息队列#xff0c;都…协议很常见只要是通信就会用到协议就像我们说话的语言一样不同的语言连通着不同的人群。 所以说消息队列也是一样想要互相通信就要使用同一种协议。 每个协议下的消息队列都有着不同的角色定义。 简单说下常见的消息队列协议
1.AMQPAdvance Message Queuing Protocol
Message消息消息服务器处理消息的原子单元包括一个内容头一组属性和一个内容体。 消息有优先级高优先级的消息在等待同一消息队列时会比低优先级的消息先发送而且当消息必须被丢弃时低优先级的消息优先被丢弃。 使用AMQP协议消息服务器不能修改内容体和内容头但可以在内容头上添加额外信息。 PubLisher消息生产者发送消息 Consumer消息消费者消费消息 Broker消息代理消息队列服务器负责接收客户端连接路由消息。 Queue消息队列Broker中的一个角色一个Broker中可以有多个Queue负责保存消息直到发送给不同的消费者。算是消息的容器。一个消息可以被投入一个或多个队列中每个队列的消息都会等待消费者连接到这个队列并被取走。 Exchange交换路由Broker中的一个角色负责接收生产者发送的消息并路由给服务器中的队列。可以被理解成一个规则表指明消息该被投到哪个队列中。 Channel信道信道是一条独立的双向数据流通道。为了解决操作系统无法承受每秒建立特别多的TCP连接。
生产者发送消息时必须指定消息要被路由到哪些个消息队列中。 当消息到消息队列中消息队列会尝试将消息传给消费者如果失败消息队列会存储消息并等待消费者。 如果没有消费者消息队列将选择性的将消息返回给生产者。 如果消息别消费掉消息队列会删除消息删除的过程或者是及时的或者是等到消费者消费结果后才删除的。
AMQP是二进制协议。
2.MQTTMessage Queuing Telemetry Transport消息队列遥测传输
由IBM开发现在被广泛用于物联网公司。因为他的特点就是轻量简单开放和易于实现。所以他常用于很多计算能力有限、带宽低、网络不可靠的远程通信应用场景。 Publisher发布者消息发布客户端 Subscriber订阅者消息订阅客户端 Broker消息代理消息服务器端 Application Message应用消息指通过网络传输的应用数据一般包括主题和负载。 Topic主题应用消息的类型一般消息发布者会确定消息的主题订阅者根据自己实际情况选择不同的主题进行消息订阅消费。 Payload负载消息订阅者具体接收的内容。
MQTT协议是通过交换预定义的MQTT控制报文来通信的。 控制报文内容由三部分组成固定报头可变报头和消息体。 固定报头通过标识不同位的值来确定报文类型包括发布订阅的一些完成状态等。 可变报头的内容根据控制报文类型不同而不同常作为包的标识符。 消息体也是根据不同的消息类型有着不同的内容。
MQTT协议中客户端和服务端是通过请求应答模式通信的。客户端发送一条控制报文数据给服务器服务器再发送一条控制报文数据给客户端。
MQTT在发布消息时有三种Qos等级至多一次0级至少一次1级只有一次2级。 至多一次等级最低客户端只需要将消息发出去即可这种等级很low用于消息不重要但特别多为了减轻通信压力就不顾质量只看数量了。 至少一次等级中等客户端要保证发出去的消息至少一次被服务端接收到所以要收到服务端的回应否则一直发这种等级一般用于服务端有幂等处理所以不怕重复消费还要保证消息不会丢失。 只有一次等级最高客户端先发消息过去然后本地记录一个我已发送但不确定你是否收到的状态然后服务端接收到消息后回给客户端一个我已接收的报文同时服务端记录一个我不确定你知不知道我已接收的状态然后客户端收到这个已接收的消息后就确定服务端收到这个消息了于是把自己本地记录的已发送未确定的状态删除同时再给客户端发送一个我已经知道你收到的报文服务端收到这个报文也会把自己之前记录的状态删掉整个一条报文只有一次的通信才算完成这种等级就比较严格了但质量上去了相对低等级的数量就会相对小些但可靠就是王道不多不少才是最好的。 只有一次的发送和确定其实思想和三次握手差不多都是两端互相确认的过程所以会一来一回的。如果传输过程中出现丢包都会由发送者重发上一条消息。
3.STOMPStreaming Text Orientated Messaging Protocal流文本定向消息协议
STOMP是一个相对简单的文本消息传输协议主要特点就是简单易懂没有特别多的套路。 客户端既可以是生产者也可以是消费者 服务端消息中心
4.XMPP可扩展通信与表达协议
基于XML的流式即时通信协议。 由于用的XML所以通用性更强。 客户端生产者消费者 服务端消息中心 XMPP的理念是尽可能的简化客户端复杂的都放在服务端。
5.JMSJava Message Servicejava消息服务应用程序接口
java消息服务应用接口是一套java API接口。 JMS是规范是对AMQPMQTTSTOMPXMPP等协议更高一层的抽象。