【问题标题】:Batch/bulk processing in JMSJMS 中的批处理/批量处理
【发布时间】:2019-08-22 09:29:56
【问题描述】:

我遇到以下情况,我收到一个包含 100,000 多个条目的 XML。对于每个项目,我必须同时处理消息,一旦批处理/批量完成,我必须通知客户我处理了它发送的 100,000 个条目。我正在考虑在 Message Driven Bean 中添加每条消息以同时处理它们中的每一条。我的问题是我怎么知道 MDB 处理了这批中的所有消息,并向我发送一个信号,表明这批/XML 中的所有消息都已完成?在 Java 消息队列中执行此操作的最佳方法是什么?我希望在处理完此 XML 中的所有消息时收到通知,以便通知客户端。

【问题讨论】:

  • 注意事务超时。也许JSR-352“Java 平台的批处理应用程序”值得一看。
  • 为什么在每个 MDB 结束其进程时不向计数器发送消息?

标签: java jakarta-ee jboss jms message-queue


【解决方案1】:

这可以通过多种方式实现,但如果您想通过 JMS 来实现,那么我认为最简单、最直接的方式是:

  1. 为 XML 中的每个条目向队列发送消息;打电话给workQueue
  2. 消费者(或消费者池,可能是 MDB)将从 workQueue 获取消息并处理它们
  3. 一旦消费者处理完一条消息,它会将一条消息放在另一个队列中,表明它已完成;打电话给resultsQueue
  4. 原始发件人可以收听resultsQueue 并向客户端更新已处理(或未处理)哪些条目。

每个 XML 条目一条 JMS 消息非常精细,因此如果您发现性能不符合您的要求,您可能希望将多个 XML 条目批处理到一条 JMS 消息中以提高吞吐量。

【讨论】:

    猜你喜欢
    • 2019-05-26
    • 2016-01-04
    • 2010-12-17
    • 1970-01-01
    • 2011-07-07
    • 2019-09-03
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    相关资源
    最近更新 更多