Hai praticamente capito. Se hai davvero bisogno di avere due servizi separati che elaborano i dati in questo modo, allora è esattamente come ti avvicini.
producer -> topicA -> service1 -> topicB -> service2
Poiché service1
è sia la lettura che la scrittura di Kafka, è sia un consumatore che un produttore. È davvero tutta la libreria di Kafka Streams. È un'astrazione per i casi in cui sei sia un consumatore che un produttore.
Solo una breve nota sulla separazione dell'elaborazione in due servizi separati in questo modo:
Ci sono sicuramente pro e contro in questa architettura, quindi considerala attentamente. Se si decide di avere più servizi per gestire questa pipeline di elaborazione, è necessario distribuire e gestire più servizi. C'è un costo definitivo per questo. Quel costo può essere superato dalla capacità di rielaborare parti della pipeline o dalla possibilità di distribuire gli aggiornamenti su diverse parti della pipeline in modo indipendente.