2012-03-20 138 views
3

我正在使用的Weblogic应用程序服务器是集群的。我创建了一个JMS队列,它有一个JNDI名称。当消费者查找jndi名称并将该事件发布到队列中时,它是否会在两个应用服务器中创建的队列中发布?相同的MDB将在两台服务器上运行 - 哪一个会将消息发布到队列中?如果我需要删除放在队列中的消息,是否应该遍历所有节点并删除消息?JMS和Weblogic集群

谢谢。

+0

您可以发布JMS模块XML配置吗? – fglez 2012-04-20 15:54:36

回答

0

使用队列意味着消息是保证准确消耗一次。这意味着消息将被传送到两个节点,但是其中一个节点只会全局处理一次。 WebLogic处理群集中的节点之间的同步和协调,以同时保证交付,但确保它在全局范围内处理一次。

这与主题形成对比,其中每个用户都获取该消息的副本。每个消息将由每个订阅者处理一次。

您不需要遍历节点来删除消息......只需在队列中抓取一个jndi引用并在任何消费者使用之前删除该消息。

0

你不会说在Weblogic中为此创建的队列类型。对于集群环境,最好使用DistributedQueue,而不是标准Queue。我相信它可以让Weblogic更好地处理当集群中的某个节点出现故障时如何处理队列中的消息。也可以选择查看队列的内容并从Weblogic管理控制台删除消息。