Hi Almog, I think you do not understand the behavior that was introduced with the KIP-334. When you have a DeserializationException, if you set the proper seek call to skip the faulty record, the next poll call will return the remaining records to process and not a new list of records. When the KIP was released, I made a demo project https://github.com/fred-ro/kafka-poison-pills not sure it's still working, I should spend time maintaining it. The only issue with the initial KIP is that you do not have access to the data of the faulty record which makes DLQ implementation quite difficult.
Regards, Fred