【问题标题】:How to reject messages greater than 100 MB HornetQ如何拒绝大于 100 MB HornetQ 的消息
【发布时间】:2018-12-31 23:11:09
【问题描述】:

我们希望拒绝放置在 hornetq 中大于 50 MB 的消息。

我们能否在队列/连接工厂级别的配置中限制它。

在 HornetQ 中放置大消息会导致堆问题并且服务器正在崩溃。

任何帮助表示赞赏。

【问题讨论】:

  • 在正确设计的应用程序中不应该需要这个。考虑使用JmsComponent#setStreamMessageTypeEnabled(true) 在 JMS 组件上启用消息流。然后确保您仅使用基于流的类型,在处理器中使用 body 时(如果有的话)。
  • 这个问题应该通过我提供的答案来解决,因为这应该允许您的总部按照地址完整政策丢弃消息。运气好的话?如果是这样,请考虑将其标记为“已回答”

标签: hornetq jboss-eap-6


【解决方案1】:

编辑您的 .xml 配置,如:

<address-setting match="your/queue/address">
   <max-size-bytes>104857600</max-size-bytes>
   <page-size-bytes>104857600</page-size-bytes>
   <address-full-policy>DROP</address-full-policy>
</address-setting>

来自docs

消息按地址存储在文件系统上。

除了在达到最大大小时分页消息之外,还可以将地址配置为仅在地址已满时丢弃消息。

..为此,请将 address-full-policy 设置为 DROP(消息将被静默丢弃)。

以上设置记录在: https://docs.jboss.org/hornetq/2.2.5.Final/user-manual/en/html/queue-attributes.html

同时,尤其是关于消息大小的元素:https://docs.jboss.org/hornetq/2.2.5.Final/user-manual/en/html/paging.html

【讨论】:

  • 嗨洛雷夫感谢您的回复。如果我放置大于 100 MB 大小的消息会发生什么。
  • 就上述而言,消息存储在系统中的每个地址(PAGE)中。或者,您可以将 address-full-policy 更改为 DROP。这将使系统丢弃大小超过给定最大大小字节的消息(实际上是拒绝它们)。
猜你喜欢
  • 1970-01-01
  • 2013-10-16
  • 2019-03-12
  • 2019-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-19
  • 2023-03-21
相关资源
最近更新 更多