【发布时间】:2011-02-11 23:01:52
【问题描述】:
在我的分布式应用程序中,我将处理请求分派到 JMS 队列。我有多个节点从该队列中消耗(负载平衡)。处理请求需要将相当大的用户特定数据加载到内存中,我显然希望将这些数据保留在内存中以供后续请求使用。因此,我使用 JMSXGroupId 和用户 ID 来确保特定用户的所有请求都由已经缓存数据的节点处理。
一段时间后,当用户不再活动时,我想卸载节点上的数据。同时,我希望该节点放弃相关 JMS 消息组的所有权。
我知道我通过关闭相应的消费者来放弃组的所有权。但是,这意味着我将失去与该消费者相关的所有组的所有权,而不仅仅是我刚刚为其卸载缓存数据的组。
有没有办法在消费者方面放弃对特定群体的所有权?
独立于代理的方式会更好,但如果这是唯一的方式,我会选择 ActiveMQ 特定的解决方案。另外,请随意建议如何使用您最喜欢的消息代理来完成此操作。
【问题讨论】:
标签: java jms load-balancing activemq distributed-computing