如果我将一堆消息发布到订阅者非常慢的主题。 geronimos“JMS资源”选项卡中的“队列大小”保持为0.如果我使用JMS队列而不是主题,我可以看到大小增加。在两种情况下,都会传递所有消息。
为什么主题的“队列大小”始终显示为0?
答案 0 :(得分:2)
主题表示发布 - 订阅模型,当没有订阅者正在侦听时,消息将消失。因此,对主题大小的查询始终为零。
主题可以有多个订阅者,因此可以在多个客户端上“读取”该主题上的消息。
另一方面,队列将保留消息,直到客户端请求下一条消息。在这里,您可以查询当前持有的消息量的大小。消息只能由一个客户端提取。
另请参阅Oracle的Basic JMS API concepts。
在理想情况下,这里不考虑持久性主题和临时队列。