如何编写JMS Broker?

问题描述 投票:0回答:1

Java消息服务关于经纪人是如何工作的?我看到了创建生产者和消费者客户端的教程和示例,但我不明白如何用JMS涉及到一个broker。我看到例如ActiveMQ,在那里可以很容易地有一个类来实现一个broker,但是看起来我也必须在我的客户端使用ActiveMQ方法来建立与broker的连接,而不是使用 纯粹 JMS方法?

java jms messagebroker broker
1个回答
1
投票

JMS API本质上是一个 客户 API。它定义了客户与经纪商互动的API。如何 如果实现的行为符合JMS规范,那么实现经纪商的行为是完全任意的。这就给了那些实现JMS broker的人足够的自由来实现它,以满足他们自己的要求和约束。这也意味着创建和配置一个broker(不管是什么broker)的实例是 由JMS API定义。

此外,JMS规范还建立了由JMS API定义的 惯例 客户能够在JNDI中找到他们的 "管理对象"(即连接工厂和目的地)。JMS 2规范的第5.1节指出。

虽然管理对象的接口并没有明确地依赖于JNDI,但JMS建立了一个惯例,即JMS客户端通过使用JNDI在命名空间中查找它们。

由于这个约定,大多数JMS提供者也提供了一个JNDI实现,以便与JMS实现一起使用。ActiveMQ通过 org.apache.activemq.jndi.ActiveMQInitialContextFactory 类的使用和配置。这个JNDI实现的使用和配置将在《JNDI》中进一步讨论。ActiveMQ文档.

由于使用JNDI只是一个 惯例 大多数JMS提供者都有其他的方法来访问管理对象,例如,ActiveMQ允许你使用ActiveMQ特定的类来编程实例化连接工厂或目标。例如,ActiveMQ允许您使用ActiveMQ特定的类来编程实例化连接工厂或目标。

要将一个JMS客户端连接到其相应的代理,你首先需要决定你是要使用JNDI还是特定于提供者的机制。一般来说,JNDI是首选方法,因为它是可插拔的(使用在 jndi.properties 文件),这使得在需要时更容易在JMS经纪商之间切换。一旦做出了这个决定,那么你就会获得一个实例的 javax.jms.ConnectionFactory 并用它来创建你的 javax.jms.Connection,等等。在这之后有很多关于如何编写JMS客户端的教程和文档。

最终,当连接到ActiveMQ时,除了JMS和JNDI APIs之外,在你的客户端应用程序中没有任何严格的需求。

© www.soinside.com 2019 - 2024. All rights reserved.