RabbitMq和RabbitMq与JMS插件的区别

时间:2017-03-30 09:07:05

标签: spring-boot rabbitmq jms spring-jms

我是JMS的新手。 我很少知道RabbitMq,现在试图找到RabbitMQ与JMS的区别。它是如何使用的以及为什么要使用它?

提前致谢。

2 个答案:

答案 0 :(得分:2)

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 Integration,只需更改配置即可在AMQP和JMS之间切换。

答案 1 :(得分:0)

我不确定RabbitMQ for JMS你的意思。但是,我将列出以下差异。

RabbitMQ

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

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