参考:官方 GlassFish 4.0 文档/javaee-tutorial Java EE 7
首先,让我们从目标类型开始:主题。根据 GlassFish 4.0 教程,“<strong> 46.4 编写高性能和可扩展的 JMS 应用程序”部分:
本节介绍如何使用 JMS API 编写能够稳健地处理大量消息的应用程序。
在“<strong> 46.4.2 使用共享持久订阅”小节中:
SharedDurableSubscriberExample.java 客户端展示了如何使用共享持久订阅。它展示了共享持久订阅如何将持久订阅的优点(当客户端不活动时订阅保持活动状态)与共享消费者的优点(消息负载可以在多个客户端之间分配)相结合。
当我们按照“<strong> 46.4.2.1 To Run the ShareDurableSubscriberExample and Producer Clients ”运行此示例时,它为我们提供了与前面关于目标类型队列示例相同的效果/功能:如果我们遵循“<strong> 46.2. 6.2 运行异步消费者和生产者客户端”,从第 5 点开始——并使用 2 个消费者终端窗口和 1 个生产者终端窗口稍微修改它。
是的,“<strong> 45.2.2.2 Publish/Subscribe Messaging Style ”部分确实提到:
JMS API 通过允许应用程序创建持久订阅,在一定程度上放宽了这一要求,这些订阅接收在消费者不活动时发送的消息。持久订阅提供了队列的灵活性和可靠性,但仍允许客户端向多个收件人发送消息。
.. 无论如何,“<strong> 46.4 编写高性能和可扩展的.. ”部分都是队列样式的示例——每个消费者一条消息:
添加到主题订阅的每条消息仅由一个消费者接收,类似于添加到队列的每条消息仅由一个消费者接收的方式。
什么是精确的技术答案:为什么在这个例子中,在主题上使用 Shared-Durable-Consumer 应该是,并在“<strong>高性能和可扩展 JMS 应用程序”与使用异步-队列中的消费者?