繁体   English   中英

JMS和ActiveMQ

[英]JMS and ActiveMQ

我需要编写一个用于在消息队列上侦听(消费者)并将其读取的数据发送到数据库的服务器,以及另一个将信息发布(生产者)到此队列的服务器。

我正在关注Spring + JMS上的这个官方Spring参考

我不了解以下内容:

  1. JMS和ActiveMQ有什么关系?
  2. 其中哪一个实际上在实现消息队列?
  3. 在示例中,我看到:

     FileSystemUtils.deleteRecursively(new File("activemq-data")); 

    作为删除队列的一种手段。

    队列中的数据是否保存在文件中?

  4. 如果维护文件系统的队列,如何将我的JMS服务器扩展到多台计算机(服务器)上

谢谢!

JMS只是API规范,不是实现。 如果要对消息队列进行操作,则需要一个实现JMS API的软件。

ActiveMQ是一个消息代理,它实现了JMS API。 除了ActiveMQ之外,还有许多其他实现JMS API的产品。

这个想法是,您的软件使用JMS API时不会特别将其绑定到特定的实现,因此,原则上您可以用实现JMS的另一种产品替换ActiveMQ,而无需在程序中进行任何更改。 该原理在软件开发中被大量使用,并且在Java EE世界中,还有许多其他API和实现以这种方式工作(例如JDBC和JDBC驱动程序,JPA和Hibernate,Servlet API和Tomcat)。

因此,ActiveMQ是实际实现消息队列的对象。

队列中的数据是否保存在文件中?

显然,这就是ActiveMQ的默认设置。

如果维护文件系统的队列,如何将我的JMS服务器扩展到多台计算机(服务器)上

首先,ActiveMQ在文件系统上存储数据的事实并不意味着它不能扩展到多个服务器。 实际上,最终所有软件(还有数据库)都将其数据存储在文件系统上(如果数据必须是持久性的)。 阅读ActiveMQ网站上的文档以了解如何扩展它(它确实支持群集 )。

 What is the relationship between JMS and ActiveMQ? 

Java消息服务(JMS)API是面向Java消息的中间件(MOM)API,用于在两个或多个客户端之间发送消息。 JMS是Java平台企业版的一部分,由在Java社区过程下开发的规范定义为JSR914。ActiveMQ是遵循JSR 914的第三方消息服务提供商。

其中哪一个实际上在实现消息队列?

ActiveMQ提供消息传递队列实现。

对于Spring和ActiveMQ集成,请参阅此文章

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM