如何使用HornetQ核心API模拟JMS主题而无需使用JMS包装器

3
我想使用HornetQ核心API翻译JMS主题的概念。在我简要地检查之后,似乎主要类JMSServerManagerImpl (来自hornetq-jms.jar) 使用jndi来协调各种所需的协作。我希望避免jndi,因为它不是自包含的,并且是一个全局共享对象,特别是在osgi环境下会有问题。一种替代方法是从JMSServerManagerImpl开始复制,但这似乎是很多工作。我更希望确认我的方法是否正确,即通过模拟HornetQ中支持主题的方式来解决这个问题。如果有人有足够的知识,或许他们可以发表评论,以便我能了解使用核心api编写自己的主题模拟的正确方法。
假设:
如果消息消费者失败(通过回滚),容器将尝试将消息传递给同一主题的另一个不同消费者。
模拟:
1.封装添加到主题的每个消息。 2.发送方设置带有确认处理程序的消息。 3.包装器(1)在真实侦听器返回后将回滚。 4.发送方随后确认交付。
我假设在第四步后,消息将被传递给所有消息接收者。如果我犯了任何错误或我的假设是错误的,请评论说明。我不确定确认如何工作的假设是否正确,所以任何指针都会很好。
2个回答

3
如果您想通过核心API向多个消费者发送消息,以下是我的建议:
  1. 创建队列1并绑定到地址1
  2. 创建队列2并绑定到地址1
  3. 创建队列N并绑定到地址1

  4. 在地址1上发送一条消息

  5. 启动N个消费者,每个消费者监听队列1-N
这样做基本上就像一个主题。

0

实际上这不是正确的答案,下一个问题,您创建多个队列是正确的答案... 主题订阅不过是一个核心队列。 - Clebert Suconic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接