See https://stackoverflow.com/questions/54983775/configuring-spring-kafka-to-use-deadletterpublishingrecoverer/54985161#54985161
When a deserialization exception occurs, the record.value() is null and the exception is in a header.
The publisher could put the original payload in the value.