JMS和AMQP-RabbitMQ

2022-02-23 00:00:00 rabbitmq amqp message-queue java jms

我想了解什么是JMS,以及它是如何与AMQP术语联系在一起的。 我知道JMS是一个API,而AMQP是一个协议。

以下是我的假设(以及问题)

  • RabbitMQ使用AMQP协议(而不是实现AMQP协议)
  • Java客户端需要使用AMQP协议客户端库来连接/使用RabbitMQ
  • JMS API在这里发挥什么作用?JMS API应使用AMQP客户端库连接RabbitMQ?
  • 我们通常使用JMS来连接RabbitMQ、ActiveMQ等消息代理,那么这里使用的默认协议是什么而不是AMQP?

上面的一些内容可能是愚蠢的。:-)但是我正试着去想它。


解决方案

您的问题有点杂乱无章,但让我们逐个查看它的内容。

总体概念:

Java Message Service(JMS)API是一个Java Message Oriented Middleware(MOM)API,用于在两个或多个客户端之间发送消息。JMS是Java平台企业版的一部分,由Java社区过程(Java Community Process)下开发的规范JSR914定义。它是一种消息传递标准,允许基于Java Enterprise Edition(Java EE)的应用程序组件创建、发送、接收和读取消息。它允许分布式应用程序的不同组件之间的通信是松散耦合、可靠和异步的。

现在(来自Wikipedia):

高级消息队列协议(AMQP)是面向消息的中间件的开放标准应用层协议。这个 AMQP的定义功能是消息定向、队列、路由 (包括点对点和发布订阅)、可靠性和 安全性。

最重要的事情(同样来自维基百科):

与仅定义API的JMS不同,AMQP是线路级的 协议。线路级协议是对 作为二进制八位数流通过网络发送的数据。 因此,任何可以创建和解释消息的工具 符合此数据格式可以与任何其他符合 与实现语言无关的工具

您应该知道的一些重要事情:

  1. 请记住,AMQP是一种不实现JMS API的消息传递技术。
  2. JMS是API,AMQP是协议,所以说JMS的默认协议当然是客户端是没有意义的 应用程序在调用 WebLogic Web服务。
  3. JMS只是一个API规范。它不使用任何协议。JMS提供程序(如ActiveMQ)可以使用任何底层协议来 实现JMS API。例如:Apache ActiveMQ可以使用任何 以下协议:AMQP、MQTT、OpenWire、睡觉(Http)、RSS和Atom STOP、WSIF、WS通知、XMPP。我建议您阅读,使用 作为连接协议的JMS传输。

好运:)

相关文章