I have a complex topology including KStreams, KTables, joins, rekeying, filters, through, branching, zips etc with live clients on output topics.
All the input, intermidate and output topics are avro based topics.
How do I handle changes to the topology (adding new steps, new input-intermidate-output topics), knowing kafka-streams maintains internal state and changelogs, complying with the following business requirements:
- no data loss
- no data duplication (to a degree)
- no downtime
Is the answer lying somewhere between using kafka-streams-application-reset or creating brand new consumer group (application id)?