RabbitMq 和带有 JMS 插件的 RabbitMq 的区别

Difference in RabbitMq and RabbitMq with JMS plugin

我是 JMS 新手。 我对 RabbitMq 知之甚少,现在正试图找出 rabbitMQ 与 JMS 的区别。它是如何使用的以及为什么要使用它?

提前致谢。

JMS 是 Java API(JEE 的一部分)。

JMS 供应商使用专有协议与代理对话;它们不兼容电线。

您通常只需更改特定于供应商的配置(连接工厂等)即可与任何 JMS 代理通信。

供应商提供一个 JMS 客户端库来与他们的经纪人对话。

AMQP 是有线协议,而不是 API。

供应商提供 Java 客户 API。

您可以使用 Spring AMQP,它位于 RabbitMQ 的 amqp-client 库及其 API.

之上

您可以使用 Spring JMS,它使用 JMS API.

与任何 JMS 代理(包括带有插件的 RabbitMQ)对话

如果您需要与任何 JMS 供应商兼容,请使用 spring-jms;如果您只打算使用 RabbitMQ,我建议您使用 Spring AMQP。

或者,在任何一个之上使用 Spring 集成,您只需更改配置即可在 AMQP 和 JMS 之间切换。

我不确定 RabbitMQ for JMS 是什么意思。但是,我将在下面列出不同之处。

RabbitMQ

  1. 适用于 AMQP 协议,它不是 J2EE 规范
  2. 用多种语言编写的应用程序可以生成和使用消息(Python、Ruby、Java、C#、Perl 等,)
  3. 不适用于 J2EE 规范,因此您不能使用 J2EE 容器默认提供的 XA 事务、bean 池、连接工厂池
  4. 社区还没有那么成熟,但是,如果您的组织需要与许多不同类型和语言的应用程序进行通信,您可以牺牲 J2EE/JMS 规范提供的所有漂亮功能。

JMS

  1. 这是 J2EE 规范,任何提供 JMS 支持的应用服务器都应该遵循规范中提到的准则。
  2. 只有 Java/J2EE 应用程序可以生产和消费,可以使其适用于其他语言,但需要使用适配器
  3. J2EE 容器提供 XA 事务、Bean 池、连接池等,开箱即用,您只需很少的配置。
  4. 如果您的组织仅使用基于 Java 的应用程序,则您无需查看 RabbitMQ 方式,因为您拥有运行良好的 JMS 支持。