JMS中的批处理/批量处理

时间:2019-04-01 08:55:17

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

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

1 个答案:

答案 0 :(得分:1)

有很多方法可以实现,但是如果您想通过JMS实现,那么我认为最简单,最直接的方法是:

  1. 将消息发送到XML中的每个条目的队列;称为workQueue
  2. 消费者(或消费者池,可能是MDB)将从workQueue接收消息并对其进行处理
  3. 一旦使用者处理完一条消息,它将把一条消息放置在另一个队列上,表明它已完成;称为resultsQueue
  4. 原始发件人可以收听resultsQueue并向客户端更新已处理(或未处理)哪些条目。

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