【问题标题】:exact example for JMS Topic in HornetQHornetQ 中 JMS 主题的确切示例
【发布时间】:2012-06-26 13:44:21
【问题描述】:

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

【问题讨论】:

  • 您应该接受答案。有人免费给了你一些工作,你至少可以为他给你的答案加分。

标签: jms publish-subscribe hornetq


【解决方案1】:

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

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

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

然而,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... Majid Azimi 将 JMS 概念与核心概念混淆了。他所要做的就是将它添加到hornetq-jms.xml
  • 我认为举一个具体的例子来支持你提供的解释很重要
猜你喜欢
  • 2013-04-01
  • 2023-03-20
  • 2012-10-29
  • 2011-06-02
  • 2023-03-08
  • 2013-02-15
  • 1970-01-01
  • 2011-12-23
  • 1970-01-01
相关资源
最近更新 更多