我正在试图了解什么JMS以及它如何与AMQP术语相关联。我知道JMS是一个API,AMQP是一个协议。
以下是我的假设(以及问题)
上面的一些可能是愚蠢的。
发布于 2013-03-01 04:33:26
你的问题有点混乱,但让我们逐一看看它的细节。
一般概念:
是一个面向消息的中间件(MOM) API,用于在两个或多个客户端之间发送消息。JMS是Java平台Enterprise的一部分,由Java Community开发的规范定义为JSR 914。是一种消息传递标准,它允许基于(Java )的应用程序组件创建、发送、接收和读取消息。它允许分布式应用程序的不同组件之间的通信是松散耦合、可靠和异步的。
现在(来自维基百科):
高级消息队列协议(AMQP)是面向消息中间件的开放标准应用层协议。AMQP的定义特征是消息定向、排队、路由(包括点对点和发布和订阅)、可靠性和安全性。
最重要的事情(同样来自维基百科):
与仅定义API的JMS不同,AMQP是一种有线级协议.线级协议是对通过网络作为八字节流发送的数据格式的描述。因此,任何能够创建和解释符合此数据格式的消息的工具都可以与任何其他兼容工具进行互操作,而不管实现语言如何。
有些重要的事情你应该知道:
好运:)
发布于 2014-10-16 19:10:25
让我们从基础开始。
RabbitMQ是一种MOM (MessageOriented中间件),它是用Erlang (一种面向TLC的编程语言)和开发的,实现了有线协议AMQP ()。目前,许多客户端API(例如,Java、C++、RESTful等)可以启用RabbitMQ消息传递服务的使用。
JMS ()是一种JCP标准,定义了一组由MOM实现的结构化。实现(即兼容) JMS的MOM的一个例子是ActiveMQ;还有HornetMQ等。这些中间件获取JMS,并相应地实现交换模式。
根据以上所述,以RabbitMQ及其Java的一个实例JMS的框架为例,可以使用RabbitMQ开发JMS实现:此时唯一需要做的事情是根据RabbitMQ规范实现交换模式(通过RabbitMQ)。
关键是:一组API,比如JMS,可以不管技术实现(在本例中是RabbitMQ)。
发布于 2013-03-01 05:48:19
在定义JMS时,没有在JMS客户端和消息服务器之间定义协议。实现JMS的JMS客户机可以使用任何协议与消息服务器通信。客户机只需要遵从JMS。仅此而已。通常,JMS客户端使用他们的消息服务器理解的自定义协议。
另一方面,AMQP是消息客户端和消息服务器之间的协议。JMS客户端可以使用AMQP作为与消息服务器通信的协议。也有这样的客户。
http://www.lshift.net/blog/2009/03/16/openamqs-jms-client-with-rabbitmq-server
https://stackoverflow.com/questions/15150133
复制相似问题