1

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

4

1 回答 1

5

我认为您对 HornetQ 内部处理主题的方式与 JMS 规范描述主题的方式感到困惑。

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

HornetQ 是一个 JMS Provider - 一个实现 JMS 规范的服务器,因此 Java 客户端可以连接到它,并使用 JMS-API。JMS 提供者可能会改变,但在使用另一个 JMS 提供者时代码应该仍然可以工作。

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

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

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

对于如何通过 HornetQ 使用 JMS 主题的示例,我强烈推荐 HornetQ 自带的示例。下载并解压 hornetq 存档后,只需转到examples/jms/topic目录并查看 readme.html 即可简要了解如何实现以及如何执行示例 ( mvn verify)。

于 2012-09-13T16:26:09.300 回答