首页 > 解决方案 > 消息队列处理,每条消息都有长时间运行的任务

问题描述

我们的项目中有一个要求,其中有要执行的长时间运行的任务列表。我们已将此任务列表添加到消息队列 (SQS)。

现在,一旦我们开始从 SQS 轮询消息,每个消息(任务)都涉及更新庞大的数据库记录列表,我们可以说这些庞大的数据库更新行是特定于轮询消息的。

给出了图形表示

    M1
/   |  \
R1  R2  R3..... 

这里 M1 是轮询的消息,其中 R1,R2,R3.... 是要更新的数据库行的列表。

现在的问题是如何处理给定消息的这个庞大的数据库行更新列表。我们是否必须 1)创建 ExecutorService(我们使用 Java 作为后端),创建多个线程来读取记录列表并将它们再次更新回数据库,或者 2)只需将行更新作为单独的消息推送回消息队列.

在这两种方法中,哪种方法是首选的,哪种方法是处理此问题的优雅可扩展解决方案

标签: javamessage-queuesystem-design

解决方案


推荐阅读