我试图深入研究java中的消息传递。我正在调查RabbitMq和AMQP协议。首先,我重复了几个来自https://spring.io/guides/gs/messaging-rabbitmq/和https://www.rabbitmq.com/的例子
现在我想更详细地了解它。
官方网站特征剖面看起来像广告。它说RabbitMQ支持几种协议:
AMQP 0-9-1,0-9和0-8,以及扩展 踩踏 MQTT AMQP 1.0 HTTP
但我不明白我为什么要选择其中之一。
你能分享你的想法吗?
发布于 2017-08-14 11:53:58
RabbitMQ是在进程、应用程序和服务器之间交换数据的一种方式。正如您所说,您可以从它支持的几个协议中选择一个。
您的选择将取决于要互连的应用程序或系统。例如:
如您所见,每个协议都有其优点和缺点,您的选择将取决于哪个协议更适合您想要构建的应用程序。
有关每个协议的更详细说明,请参见此链接
发布于 2017-08-15 07:37:27
该协议只定义客户端和服务器之间的通信,对消息本身没有影响。发布时可以使用一种协议,也可以使用另一种协议。
AMQP (高级消息队列协议):RabbitMQ最初是为了支持由RabbitMQ代理支持的“核心”协议而开发的。AMQP旨在有效地支持各种各样的消息传递应用程序和通信模式。路由是AMQP中的一项功能,即交换决定将消息放在哪个队列上的过程。RabbitMQ中的消息将根据交换类型和密钥从exchange路由到队列。(与MQTT相比,AMQP中有更复杂的路由选项)。现在,RabbitMQ实现了规范的0-9-1版本,并为其他版本提供了遗留支持。AMQP1.0是一个与AMQP0-9-1/ 0-9 / 0-8完全不同的协议.
MQTT (消息队列遥测传输)以其最小的设计使其适合内置系统、移动电话和其他内存和带宽敏感的应用程序。使用AMQP可以完成特定的任务,但是MQTT可能是这种特定类型场景的更合适的协议选择。
超文本传输协议(,超文本传输协议)是一种适用于分布式、协作、超媒体信息系统的应用层协议.HTTP不是消息传递协议。但是,RabbitMQ可以通过HTTP传输消息。
STOMP (简单的或流的面向文本的消息协议)是一种简单的基于文本的协议,用于在应用程序之间传输数据。它比AMQP简单得多,也不那么复杂,它更类似于HTTP。STOMP客户端可以与几乎所有可用的STOMP通信,这提供了许多语言、平台和代理之间的轻松和广泛的消息互操作性。例如,可以使用telnet客户端连接到STOMP。
资料来源:https://www.rabbitmq.com/protocols.html和https://www.cloudamqp.com/docs/protocols.html
https://stackoverflow.com/questions/45673613
复制相似问题