我有一个简单的场景,其中发布者(我的Java应用程序)发布关于主题 消息。 50个客户端对同一JMS topic.As订阅一旦消息在主题发布的,所有的50用户将被告知 .Say只有一个用户(0UT 0F 50)处理消息并处理后发送确认 。(一旦客户端处理完成后,我可以看到该消息所消耗 apache的MQ控制台上。否则,如果没有客户端接收消息 我看到这条消息是未决的消息)之后发送确认。一旦客户确认它,JMS主题的消息可用性?
现在的问题是,一旦任何客户端发送确认和任何 新的客户端订阅的话题,他会收到该消息?或它的工作原理的方式,其中的消息一直 由任何客户端(其内部是指确认已经通过任何客户端的发送)消耗时,没有进一步的通知将是 发送到任何新的用户和消息将从被取下的主题(这是我遇到的behaviuor,但看起来像 它不应该以这种方式按按发布/ http://en.wikipedia.org/wiki/Java_Message_Service下订阅模式工作)?
谢谢Shashi。正如您所说的当用户确认接收到消息时,该消息将被消息传递提供程序删除,以便消息不会再次传递。这意味着消息将在任何订户收到确认后立即删除。要删除该消息,所有订户都不需要确认。只有一个确认就足够了? –
不。它通常取决于消息传递提供者的实现。供应商可能为每个订户创建临时队列,并将发布副本放到该队列中。一旦订阅者收到该消息,提供者就从队列中删除该消息。在这种情况下,每个用户都承认。某些提供商可能不会使用队列,并且只有在用户列表中的最后一位用户确认后才会删除该消息。 – Shashi
Atleast至少在活动MQ的情况下,我的观察是活动MQ UI控制台显示消息收到第一个确认后即被使用。我希望当控制台将消息显示为已消耗时,这意味着消息已从主题中删除(因为如果新订阅者订阅,他不再获取已消耗的消息)。但是我没有在网上获得任何内容来确认它? –