Я думаю, что это хороший вариант использования Kafka.
Вы можете продолжать работать с рабочим пулом, когда каждый поток создает и слушает kafka с потребителем. Вместо рабочего пула вы также можете создать несколько экземпляров вершин в одном процессе java или даже несколько экземпляров jvm (или даже контейнеров, почему бы и нет: p). Я предпочитаю этот второй подход для обработки динамической c масштабируемости в управляемой событиями и распределенной архитектуре (я написал более подробную информацию об этом в этом ответе ).
В любом случае, все потребители должны иметь экземпляр с одним и тем же group.id
, чтобы быть частью одной и той же группы потребителей. Таким образом, kafka сможет назначить разделы топи c каждому члену группы (один раздел не может быть прочитан двумя членами одновременно).
И, наконец, иметь возможность создавать "последовательности событий", вам нужно только создать события в kafka topi c с ключом распределения, который будет определять вашу последовательность (два сообщения, созданные с одним и тем же ключом распределения, будут храниться в одном разделе и будут прочитаны тот же потребитель группы).