JMS 和 Weblogic 集群
Posted
技术标签:
【中文标题】JMS 和 Weblogic 集群【英文标题】:JMS and Weblogic Clustering 【发布时间】:2012-04-05 00:20:48 【问题描述】:我使用的 Weblogic 应用程序服务器是集群的。我创建了一个 JMS 队列,它有一个 JNDI 名称。当消费者查找 jndi 名称并将事件发布到队列时,它会发布在两个应用服务器中创建的队列中吗?相同的 MDB 将在两台服务器上运行 - 哪一台将消息发布到队列中?如果我需要删除队列中的消息,我应该遍历所有节点并删除消息吗?
谢谢。
【问题讨论】:
你能发布 JMS 模块 XML 配置吗? 【参考方案1】:使用队列意味着消息保证被准确地消费一次。这意味着,消息将被传递到两个节点,但它只会由其中一个节点全局处理一次。 WebLogic 处理集群中节点之间的同步和协调,以同时保证交付,但确保在全局范围内只处理一次。
这与主题形成对比,主题中每个订阅者都会获得消息的副本。每条消息将由每个订阅者处理一次。
您不需要遍历节点来删除消息...只需获取对队列的 jndi 引用并在任何消费者使用它之前删除消息。
【讨论】:
【参考方案2】:你没有说你在 Weblogic 中为此创建什么类型的队列。对于集群环境,最好使用分布式队列,而不是标准队列。我相信它允许 Weblogic 在集群中的一个节点出现故障时更好地处理如何处理队列中的消息。还可以选择从 Weblogic 管理控制台查看队列内容和删除消息。
【讨论】:
以上是关于JMS 和 Weblogic 集群的主要内容,如果未能解决你的问题,请参考以下文章
在 WebLogic 中配置 JMS 消息大小:weblogic.socket.MaxMessageSizeExceededException