gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 00:11:40 27 4
gpt4 key购买 nike

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

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

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

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

最佳答案

不可以,当您的客户端连接到同一集群的另一台托管服务器时,您不能使用传送到一台托管服务器的消息。

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

当消息使用者监听 UDQ 时,它会固定到其中一台托管服务器上的 JMS 服务器。它看不到其他服务器中的消息。

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

关于jms - 来自集群中分布式队列的所有 JMS 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14987012/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com