我有一个批处理过程,我们在队列中收到一条START消息,并在同一队列中收到一条END消息。在Start消息之后,我们在其他3个队列中收到数千条消息,我们会过滤,丰富,聚合并最终转换为JSON。我们可以将此管道称为MAIN_PIPE)
在启动消息之后,我们有一个适配器,它从数据库中读取我们将收到的一条消息中的元素总数(我们可以将此管道称为COUNTER_PIPE)
在结束消息之后,每当我们处理完所有消息时,我们都必须向外部服务发送请求。
因此,我们需要在MAIN_PIPE中对所有处理过的消息(JSON转换)进行计数,并与COUNTER_PIPE中的该数字进行比较。
我该如何比较?
答案 0 :(得分:1)
您是否还要介绍如何阅读这些3 queues
?我不清楚START与批次的所有消息之间的相关性。如果这是常规的消息驱动通道适配器,则有时我们可能会开始接收这些消息,但仍然没有START或没有关于DB中计数的信息。
无论如何,我会这样做:
START和END消息以及该批次中的所有消息必须具有相同的correlataionKey
才能让聚合器最终形成批处理。
由于案例中的论坛无论如何都基于count
,除非发送到聚合器,否则您将无法选择filter
中丢弃的消息。这可能只是简单的错误存根,以便能够在聚合器的发布功能中正确区分它们。
聚合器的releaseStrategy
必须遍历该组以查找包含count
的邮件,并将其与组大小+ 2(START& END邮件)进行比较。
对你有意义吗?