我试图了解什么是 JMS 以及它如何与 AMQP 术语相关联。
我知道JMS是一个API,AMQP是一个协议。
这是我的假设(以及问题)
- RabbitMQ使用AMQP协议(而不是实现AMQP协议)
- Java客户端需要使用AMQP协议客户端库来连接/使用RabbitMQ
- JMS API 在哪里发挥作用? JMS API 应该使用 AMQP 客户端库来连接到 RabbitMQ?
- 通常我们使用JMS来连接RabbitMQ、ActiveMQ等消息代理。那么这里使用的默认协议是什么而不是AMQP呢?
上面的一些可能是愚蠢的。 :-) 但我试图理解它。
你的问题有点乱,但让我们一点一点地看看。
一般概念:
Java 消息服务(JMS) API 是一种 Java 面向消息的中间件 (MOM) API,用于在两个或多个客户端之间发送消息。 JMS 是 Java Platform, Enterprise Edition 的一部分,由 Java Community Process 下开发的规范(JSR 914)定义。它是一种消息传递标准,允许基于 Java 企业版 (Java EE) 的应用程序组件创建、发送、接收和读取消息。它允许分布式应用程序的不同组件之间的通信松散耦合、可靠且异步.
Now (from 维基百科 https://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol):
高级消息队列协议 (AMQP)是面向消息中间件的开放标准应用层协议。这
AMQP 的定义特征是消息导向、排队、路由
(包括点对点和发布订阅)、可靠性和
安全。
最重要的是(同样来自维基百科):
与仅定义 API 的 JMS 不同,AMQP 是线路级的
协议。线路级协议是对传输层格式的描述。
作为八位字节流通过网络发送的数据。
因此,任何可以创建和解释消息的工具
符合此数据格式可以与任何其他兼容的数据格式互操作
工具与实现语言无关
您应该了解的一些重要事项:
- 请记住,AMQP 是一种不实现 JMS API 的消息传递技术。
- JMS是API,AMQP是协议。所以说JMS的默认协议是什么是没有意义的,当然是客户端
应用程序在调用时使用 HTTP/S 作为连接协议
WebLogic Web 服务。
- JMS 只是一个 API 规范。它不使用任何协议。 JMS 提供者(如 ActiveMQ)可以使用任何底层协议来
实现JMS API。例如:Apache ActiveMQ 可以使用任何
以下协议:AMQP、MQTT、OpenWire、REST(HTTP)、RSS 和 Atom,
Stomp、WSIF、WS 通知、XMPP。我建议你阅读使用
JMS 传输作为连接协议 http://docs.oracle.com/cd/E13222_01/wls/docs103/webserv_adv_rpc/jmstransport.html#wp244314.
祝你好运 :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)