Лично я бы создал тему для каждого типа событий и создал бы другого потребителя для потоковой передачи событий на соответствующий канал.
Следующее немного сложнее и включает больше тем, но позволит вам создать более упорядоченный процесс.
CreatedEvent
/ UpdatedEvent
/ DeletedEvent
записано в тему event_input_stream
.
AuditConsumer
потребляет от event_input_stream
с группой потребителей audit
.
EventSplitter
потребляет из event_input_stream
с группой потребителей splitter
.
EventSplitter
проверяет тип события и выдает один из created_event
, updated_event
, deleted_event
.
CreatedConsumer
потребляет от created_event
.
UpdatedConsumer
потребляет с updated_event
.
DeletedConsumer
потребляет от deleted_event
.
/> created_event > CreatedConsumer
event > event_input_stream > EventSplitter -> updated_event > UpdatedConsumer
\> deleted_event > DeletedConsumer
Проблема с тем, что все потребители читают из одной и той же темы, заключается в том, что UpdateConsumer
нужно будет прочитать все сообщения, даже если они отбрасывают 90% из них. Это фактически означает необходимость одинакового масштабирования всех потребителей, поскольку они фактически будут потреблять одинаковое количество сообщений.