This kind of behavior as I understand it from my own experience is done by default "Kafka design":
Delivery Guarantees at least once: This means messages are delivered one or more times. If there is a system failure, messages are never lost, but they may be delivered more than once.
Official docs: https://docs.confluent.io/kafka/design/delivery-semantics.html