It seems that when the throttled.unprocessed-record-max-age.ms
is reached the application is marked unhealthy and it stops consuming regardless of what failure strategy we set. So is this situation treated as a separate error to what the actual failure strategy is configured?
For example if we get a bad record that cannot be acked or nacked, the timeout happens and the application stops consuming. This makes it hard to deal with poison pills. If for example the failure strategy was dead-letter we could at least continue processing and go look at the dead letter topic and see the failed message.
You are right, the throttled commit strategy does not nack messages. The throttled.unprocessed-record-max-age.ms
check is there to avoid a malformed stream that can't continue processing records and committing offsets, ex. a message that is not processed (not acked nor nacked) for a long time.
For poison pills, I suggest you detect them and nack the message (for example throw an exception). If that is not an option you can consider using the Smallrye Fault Tolerance @Timeout
annotation