Java JMS与ActiveMQ

Java JMS与ActiveMQ,java,spring,jms,activemq,message-queue,Java,Spring,Jms,Activemq,Message Queue,我需要编写一个服务器,侦听消息队列上的消费者并将其读取的数据发送到数据库,以及另一个将信息生产者发布到该队列的服务器 我关注Spring+JMS 我不明白以下几点: JMS和ActiveMQ之间的关系是什么? 其中哪一个实际实现了消息队列? 在我看到的例子中: FileSystemUtils.deleteRecursively(new File("activemq-data")); 作为删除队列的一种方法 队列的数据是否保存在文件中 如果维护文件系统的队列,如何将JMS服务器扩展到多个计算机服

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

我关注Spring+JMS

我不明白以下几点:

JMS和ActiveMQ之间的关系是什么? 其中哪一个实际实现了消息队列? 在我看到的例子中:

FileSystemUtils.deleteRecursively(new File("activemq-data"));
作为删除队列的一种方法

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

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

谢谢

Java消息服务JMS API是一种面向Java消息的中间件MOM API,用于在两个或多个客户端之间发送消息。JMS是Java平台Enterprise Edition的一部分,由Java社区流程下开发的规范JSR914定义。ActiveMQ是遵循JSR914的第三方消息传递服务提供商

其中哪一个实际实现了消息队列

ActiveMQ提供消息传递队列实现

有关Spring和ActiveMQ集成的信息,请参阅此

Java消息服务JMS API是一种面向Java消息的中间件MOM API,用于在两个或多个客户端之间发送消息。JMS是Java平台Enterprise Edition的一部分,由Java社区流程下开发的规范JSR914定义。ActiveMQ是遵循JSR914的第三方消息传递服务提供商

其中哪一个实际实现了消息队列

ActiveMQ提供消息传递队列实现

有关Spring和ActiveMQ集成的信息,请参阅。

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

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

其思想是,您的软件使用jmsapi,而无需特别将其绑定到特定的实现,因此原则上,您可以用另一个实现JMS的产品替换ActiveMQ,而无需更改程序中的任何内容。这一原则在软件开发中被大量使用,在JavaEE世界中有许多其他API和实现都是这样工作的,例如JDBC和JDBC驱动程序、JPA和Hibernate、ServletAPI和Tomcat

因此,ActiveMQ实际上实现了消息队列

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

显然,ActiveMQ默认就是这样做的

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

首先,ActiveMQ在文件系统上存储数据的事实并不意味着它不能扩展到多个服务器。事实上,如果数据必须是持久的,那么最终所有软件数据库也会将其数据存储在文件系统上。阅读上的文档,了解如何扩展它所支持的功能。

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

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

其思想是,您的软件使用jmsapi,而无需特别将其绑定到特定的实现,因此原则上,您可以用另一个实现JMS的产品替换ActiveMQ,而无需更改程序中的任何内容。这一原则在软件开发中被大量使用,在JavaEE世界中有许多其他API和实现都是这样工作的,例如JDBC和JDBC驱动程序、JPA和Hibernate、ServletAPI和Tomcat

因此,ActiveMQ实际上实现了消息队列

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

显然,ActiveMQ默认就是这样做的

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


首先,ActiveMQ在文件系统上存储数据的事实并不意味着它不能扩展到多个服务器。事实上,如果数据必须是持久的,那么最终所有软件数据库也会将其数据存储在文件系统上。阅读上的文档,了解如何扩展它所支持的功能。

那么,两者之间到底有什么联系呢?我可以在没有JMS的情况下使用Spring和ActiveMQ,还是反之亦然?上面的例子是嵌入ActiveMQ吗?我实际上没有将ActiveMQ下载到一个目录并运行它以使其工作?JMS为标准消息传递协议以及支持Java程序的特殊消息传递服务提供了一个通用接口。因此,实际上ActiveMQ实现了JMS API,以提供消息传递服务
为了完成工作,您需要安装ActiveMQ和Spring依赖项来将它们粘合在一起。这个例子似乎使用的是独立的ActiveMQ。那么,两者之间的连接到底是什么呢?我可以在没有JMS的情况下使用Spring和ActiveMQ,还是反之亦然?上面的例子是嵌入ActiveMQ吗?我实际上没有将ActiveMQ下载到一个目录并运行它以使其工作?JMS为标准消息传递协议以及支持Java程序的特殊消息传递服务提供了一个通用接口。所以本质上ActiveMQ实现了JMS API来提供消息传递服务,为了完成您的工作,您需要安装ActiveMQ并使用Spring依赖项将它们粘合在一起。该示例似乎使用独立的ActiveMQ。
What is the relationship between JMS and ActiveMQ?