【问题标题】:JMS taking too long to process messagesJMS 处理消息的时间过长
【发布时间】:2015-12-12 07:36:07
【问题描述】:

应用程序有一个负责传递审计日志的 JMS 队列。应用程序将日志发送到 JMS 队列,该队列由 MDB 使用。

但是,发送的消息是从 20 MB 到 100 MB 不等的大型 XML 文件。问题是 JMS 队列消耗消息的时间过长,导致 OutOfMemory 错误。

我应该怎么做才能解决这个问题?

【问题讨论】:

  • 您的应用程序正在使用哪个 EJB 容器?每秒的生产者(源)事务(消息)是多少?每秒的消费者(这里是您的 MDB)事务数是多少?
  • @VA31 容器是 JBoss EAP 6 (HornetQ)。关于每秒吞吐量我不确定,我必须进行性能测试才能为您提供该信息。
  • 您是否考虑过增加 MDB 实例的数量,以便应用程序能够处理更多消息?

标签: java jakarta-ee jms


【解决方案1】:

这个答案可能对 jguilhermemv 没有帮助,只是想为那些可以阅读这篇文章的人分享一个想法,一个解决大消息的方法。 首先是尽量不要发送大消息,现在我们有两个选择(但是这些需要更改实现,并且可以在启动时完成,或者在后期允许系统实现更改):

  1. 尝试将日志保存在数据库中,并在 JMS 消息中仅发送日志 ID。 (不建议将日志保存在数据库中,因为保存的大小和时间将在后期再次成为问题。

  2. 以文件形式保存日志(将它们保存在一个公共位置)和 DB 中的文件名,并通过 JMS 共享这些文件名 ID。消费者可以在消费后读取该日志文件。

【讨论】:

    猜你喜欢
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多