2

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)?

Gleb
  • 21
  • 2

0 Answers0