2012-06-25 25 views
1

我读了hornetQ文档,困惑了很多。有人可以给出一个确切的例子来在hornetQ中创建一个JMS主题。我的意思是hornetq-jms.xmlhornetq-configuration.xml中的xml配置。假设我们有一个名为top的主题和2个订户:sub1,sub2。我得到的是我们应该定义两个队列(每个用户一个队列)并将它们绑定到实际上是主题名称的地址,但是用户如何知道他们应该连接到哪个队列?(他们只知道主题名称)JMS主题在HornetQ中的确切示例

+0

你应该接受答案。有人免费给你做了一些工作,你至少可以给他提供他给你的答案的要点。 –

回答

6

我认为HornetQ处理内部问题的方式与JMS规范描述主题的方式形成了鲜明对比,令您感到困惑。

让我们从JMS规范开始。在这里,您有一个主题,其中n个订阅者可以收听消息,这些消息将由客户端发布。在JMS中,我们只谈论单数的目的地,例如。我们将分别发送消息主题或队列。

HornetQ是一个JMS提供者 - 一个实现了JMS规范的服务器,所以Java客户端可以连接它并使用JMS-API。 JMS提供程序可能会更改,但是在使用其他JMS提供程序时,该代码仍然可以工作。

但是,HornetQ并没有在内部区分目的地(主题或队列),因为它试图成为通用消息中间件。在HornetQ中,所有主题或队列都以“地址”和“队列”的形式实现。当你使用HornetQ API(CoreAPI)而不是JMS-API时,你必须处理这些事情。您应该阅读HornetQ documentation中的地址部分:

在核心中,没有主题的概念,主题是仅用于JMS的术语。相反,在核心,我们只处理地址和队列。

例如,JMS主题将由单个地址实现到 ,许多队列被绑定。每个队列代表订阅 的主题。 JMS队列将作为单个地址实现到 哪一个队列被绑定 - 该队列表示JMS队列。

有关如何通过HornetQ使用JMS主题的示例,我强烈建议使用HornetQ自带的示例。在加载并提取hornetq存档后,只需转至examples/jms/topic目录并查看readme.html以简要了解如何实施以及如何执行示例(mvn verify)。

+1

+1 ... Majid Azimi令JMS Concepts与核心概念混淆不清。他所要做的就是将其添加到hornetq-jms.xml中 –