I'm using SCDF (2.5.3.RELEASE) + Apache Kafka + Avro for messages (de)serialization.
SCDF stream definitions involve standard spring cloud app starter router-sink (version 2.1.5.RELEASE).
Router-sink configuration is pretty simple:
router:
expression: "headers['subject'] != null ? 'result_'.concat(new String(headers['subject'])) : 'nullChannel'"
resolution-required: true
spring:.
cloud:
stream:
default:
contentType: application/*+avro
bindings:
input:
group: ...
kafka:
binder:
brokers: ${application.brokers}
This configuration works fine with router-sink 2.1.5.RELEASE.
After migration of router-sink 2.1.5.RELEASE to version 3.0.2 it won't work anymore:
java.lang.IllegalArgumentException: Payload must not be null.
Apparently it's caused by attempt of spring-router 3.0.2 to call appropriate (Avro) Payload input converter (consumer.key/value-deserializer, producer.key/value-serializer). But it's not in classpath of spring-router.
How standard Spring Cloud stream app router-sink 3.0.2 is supposed to work with custom converters? Is there an option to just pass-through message payload (as soon as we only need headers)?