У меня есть потребитель Kafka, написанный в приложении Springboot, который получает полезную нагрузку из темы Kafka под названием matchupdates, обрабатывает ее и сохраняет в базе данных. Поскольку я получаю огромные обновления для совпадения, соответствующую полезную нагрузку можно идентифицировать с помощью matchId.
рассмотрите следующие полезные данные, которые использует служба Springboot, где M1 ,M2 — это не что иное, как matchId, а соответствующие обновления обозначают поля.
M1 -> (update1) {matchid,name,....
M1 -> (update2) {matchid,name,....
M1 -> (update3) {matchid,name,....
M2 -> (update1) {matchid,name,....
M2 -> (update2) {matchid,name,....
Здесь мое требование:** идентичные полезные данные должны использоваться только последовательно** (т. е. update1, update2, update3 для matchId M1 должны обрабатываться последовательно (т. е. обработка и обновления в базе данных и** если какая-либо операция выполняется дольше, остальные обновления должны ждать в очереди**), тогда как обновление1 M1 и обновление2 M2 могут обрабатываться параллельно.
Могу ли я добиться этого, используя исполнители служб или любой другой способ в Java, с помощью которого я могу обрабатывать идентичные полезные данные только последовательно, и, если необходимо, их нужно ждать в очереди, пока не перестанут обрабатываться предстоящие обновления.
Я пробовал использовать исполнитель пула потоков с очередью, но каждый раз он назначается другому потоку, доступному в пуле, что приводит к параллельному выполнению полезных нагрузок с одинаковым MatchId.
Подробнее здесь: https://stackoverflow.com/questions/784 ... -processin
Последовательная обработка идентичных полезных данных запроса и параллельная обработка неидентичных полезных данных. ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение