gpt4 book ai didi

java - JMS 1.1 : Load sharing client side for Point-to-Point mode

转载 作者:行者123 更新时间:2023-11-30 03:45:16 25 4
gpt4 key购买 nike

我正在开发的 JMS 1.1 (TibcoJms 4.4.1) 遗留系统在服务器端建立了一个 JMS 队列(不是主题),用于 PTP 通信模式。消息项将不断地被服务器放入队列中。

我想要实现的是通过客户端的多个线程轮询这些数据。每个线程应该处理具有特定属性值的消息。

我猜想,我可以做到这一点的一种方法是实现一个 MessageListener 监听该队列,该队列充当“开关”,将收到的消息分发(推送)到客户端的每个线程进行处理。或者我可以实现一个 MessageListener 监听服务器上的该队列,并将收到的消息放入客户端上的新队列中,每个线程将针对客户端队列进行轮询。

无论哪种方式,我认为我都需要在线程之间共享的客户端上使用一组额外的数据结构。

我的问题是是否有一种更直接的方法,涉及客户端处理器线程与服务器上的队列之间的直接通信,有点类似于一个主题的多个订阅者(尽管每个订阅者实际上并没有“共享负载”,而是获得相同的负载。这对于我的目的来说是可以接受的)。

在这种情况下,有人可以建议一些好的常见做法吗?

最佳答案

直接连接的概念取决于 JMS 实现的实际编码方式。 pub sub 或点对点本质上并不是更直接的联系。这确实取决于实现。

添加到您选择使用的 API。如果您有多个线程,请考虑这些线程是否是中断驱动的,以便可以使用多个消息监听器,每个监听器都有一个选择器。或者,使用选择器再次使用同步接收。

请记住,JMS 提供程序不是数据库,因此广泛使用选择器并不是一个好主意。他们只是没有所有属性的索引。如果这是一个问题,您将需要一个本地分布数据结构。

根据您所说的,不确定 pub sub 模型是否有帮助。听起来每条安装消息应该只有 1 个消费者。

关于java - JMS 1.1 : Load sharing client side for Point-to-Point mode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25919108/

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