当组中的消息数达到另一行消息中定义的数字时,释放组

时间:2017-03-13 14:09:57

标签: spring-integration

我有一个批处理过程,我们在队列中收到一条START消息,并在同一队列中收到一条END消息。在Start消息之后,我们在其他3个队列中收到数千条消息,我们会过滤,丰富,聚合并最终转换为JSON。我们可以将此管道称为MAIN_PIPE)

在启动消息之后,我们有一个适配器,它从数据库中读取我们将收到的一条消息中的元素总数(我们可以将此管道称为COUNTER_PIPE)

在结束消息之后,每当我们处理完所有消息时,我们都必须向外部服务发送请求。

因此,我们需要在MAIN_PIPE中对所有处理过的消息(JSON转换)进行计数,并与COUNTER_PIPE中的该数字进行比较。

我该如何比较?

1 个答案:

答案 0 :(得分:1)

您是否还要介绍如何阅读这些3 queues?我不清楚START与批次的所有消息之间的相关性。如果这是常规的消息驱动通道适配器,则有时我们可能会开始接收这些消息,但仍然没有START或没有关于DB中计数的信息。

无论如何,我会这样做:

  1. START和END消息以及该批次中的所有消息必须具有相同的correlataionKey才能让聚合器最终形成批处理。

  2. 由于案例中的论坛无论如何都基于count,除非发送到聚合器,否则您将无法选择filter中丢弃的消息。这可能只是简单的错误存根,以便能够在聚合器的发布功能中正确区分它们。

  3. 聚合器的releaseStrategy必须遍历该组以查找包含count的邮件,并将其与组大小+ 2(START& END邮件)进行比较。

  4. 对你有意义吗?