首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自集群中分布式队列的所有JMS消息

来自集群中分布式队列的所有JMS消息
EN

Stack Overflow用户
提问于 2013-02-21 02:13:44
回答 2查看 2.7K关注 0票数 3

当前使用WebLogic和分布式队列。我从文档中了解到,分布式队列允许您通过使用全局JNDI名称检索到集群中任何队列的连接。似乎分布式队列为您提供的主要功能之一是跨多个受控服务器的负载平衡连接。因此,我们有4个受控服务器(每个物理上有两个,通过多播通信),每个受控服务器都有一个单独的JMS服务器,该服务器被配置到它自己的数据存储。

我99%确定我已经知道这个问题的答案,但是似乎如果你想从一个队列中消费一个消息,并且该队列存在于集群中的每个Mgd服务器上,那么从技术上讲,你不能从任何队列中拉出一条消息(你只能从你所连接的队列中拉出消息)。因此,如果我在Mgd服务器4上有一条消息,并且我连接到Mgd服务器1,我将看不到来自Mgd服务器4的队列中的消息。

那么,在Java或WLS中,有没有一种方法可以使用来自队列(跨集群)的所有节点的消息。比如查看每个Mgd服务器上队列的每个实例?它看起来不是这样的,文档表明这似乎是不可能的,就像这个视频(大约5分钟)一样:

http://www.youtube.com/watch?v=HAKixK_wp0Q

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-22 01:53:34

当您的客户端连接到同一集群中的另一台受控服务器时,您不能使用传递到另一台受控服务器的消息。

下面是它的工作原理。使用UDT时,wls提供一个JNDI名称,该名称可在内部为每个受控服务器解析为4个不同的JNDI名称,每个受控服务器上的JMS服务器是不同的。当您在发布消息时使用UDQ JNDI名称时,它将使用您选择的算法和在连接工厂中完成的其他配置到达4个受控服务器中的一个。

当消息使用者侦听UDQ时,它被固定到其中一个受控服务器上的JMS服务器。它对其他服务器中的消息没有可见性。

通常,UDQ用于希望消息由多个受控服务器并发使用的场景。您通常会将MDB部署到集群,这意味着MDB将被部署到每个受控服务器,并且每个受控服务器都将能够使用来自其本地JMS服务器的消息。

票数 3
EN

Stack Overflow用户

发布于 2013-02-21 08:46:21

如果您的消息库配置为使用数据库,我相信您可以这样做。如果是这样,那么我认为从队列中删除一个项目就会将其从共享数据库表中删除。即所有JMS服务器都指向相同的数据库实例和表。这应该也很容易测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14987012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档