2011-02-03 29 views
1

在我的分布式应用程序中,我将处理请求分派给JMS队列。我有多个节点从该队列中消耗(负载平衡)。处理请求需要将相当大的用户特定数据块加载到内存中,我显然希望将这些数据保存在内存中以备后续请求。因此,我将JMSXGroupId与user-id一起使用,以确保针对特定用户的所有请求都由已缓存数据的节点处理。如何在不杀死整个使用者的情况下从JMS消息组注销(ActiveMQ)

经过一段时间,当用户不再活动时,我想卸载节点上的数据。同时,我希望该节点放弃关联的JMS消息组的所有权。

我知道我通过关闭相应的消费者来放弃集团的所有权。但是,这意味着我将失去与该消费者相关的所有组的所有权,而不仅仅是我刚刚卸载缓存数据的组。

有没有办法放弃消费者方的特定群体的所有权?

独立于代理的方式会更可取,但如果这是唯一方法,我会为ActiveMQ特定的解决方案解决问题。另外,请随时提出如何使用您最喜爱的邮件代理完成此操作。

回答

2

如果不关闭消费者,您现在无法做到这一点。 消费者!=连接顺便说一句 - 那么为什么你不使用每个连接多个消费者 - 每组一个?

相关问题