ActiveMQ 消息组过期

ActiveMQ message group expiration

我们正在使用 ActiveMQ 中的消息组。

我们每天会有大约 100,000 个消息组,每个组有 1 到 10 条消息。该组的随机(1 到 10 条之间)数量的消息将在大约 24 小时内的未知时间到达。

由于我们不知道有多少消息会到达特定消息组,因此我们无法明确关闭该组。我们不希望消息组永远存在,因为我们怀疑它会导致内存泄漏。

我们怎样才能实现类似于下面的东西?我们还缺少其他选择吗?

messageGroup.setTimeToLive(48 小时)?

您无需担心关闭消息组;因为消息组不是根据 JMSXGroupID 的不同值单独管理的。 ActiveMQ 为每个消息组值创建哈希码桶(即 JMSXGroupID 值的每个值被哈希并分成桶。因此哈希码是为 JMSXGroupID 的字符串值计算的,然后该值被放入a 'hash bucket' 这样就不会有大量的可能值,以避免内存耗尽。

因此 JMSXGroupID 值可以是完全随机的字符串,代理不会 运行 内存不足。我们应该更新 Message Groups documentation 以使其更清楚!