activemq-artemis - ActiveMQ Artemis 什么时候清理 group id map
问题描述
当使用该属性对消息进行分组时JMSXGroupId
,代理需要保留一个 groupId 值和消费者的“映射”,以确保所有相同的消息JMSXGroupId
都发送给同一个消费者。
我们注意到只有当我们断开消费者的连接时,服务器上的组数才会减少。
在一个幸福的情况下,我们的消费者可以存活很长时间,因为没有理由关闭消息侦听器的连接。这导致组数增加。有没有办法为组 id 配置过期时间?或者其他方式来减少组图而不需要消费者定期重新连接?
解决方案
您在这里有 3 个选项(没有特别的顺序)...
首先,您可以使用组“桶”。这实质上是通过使用存储桶而不是 group-id/consumer 的 1:1 映射来减小映射的大小。文档中提供了其他详细信息和配置信息。
其次,您可以使用 a 配置 a LOCAL
grouping-handler
,group-timeout
如果在配置的时间内未使用组 ID,它将删除映射条目。例如:
<grouping-handler name="my-grouping-handler">
<type>LOCAL</type>
<group-timeout>60000</group-timeout>
</grouping-handler>
使用此配置,任何一分钟(即 60,000 毫秒)未使用的组 ID 都将被删除。
JMSXGroupSeq
第三,您可以通过将组中最后一条消息的属性设置为 来手动关闭组-1
。这也在文档中进行了讨论。
推荐阅读
- google-apps-script - 使用 Google Apps 脚本获取 Docusign 的访问令牌
- python - 列出数据框列中存在的所有数据类型
- css - 在chartjs中更改饼图和折线图中标签的字体系列
- ssis - 无法加载托管管道组件“CozyRoc.JsonDestination”。执行升级错误
- azure - GCP reCAPTCHA Enterprise 密钥在 dev 中有效,但在 test 或 prod 中无效
- wso2-am - 在 wso2 api manager 3.2.0 的端口和 Thrift SSL 端口上使用二进制 SSL 传输的位置
- javascript - Vue中如何控制多个复选框
- oracle - PL/SQL 根据动态表名创建视图
- google-apps-script - 需要使用应用程序脚本从 Monthwise 到 datewise 对日期进行排序
- flutter - Flutter ios无法构建