diff --git a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/MessageConverterConfigurer.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/MessageConverterConfigurer.java index a08a04681..d9355de8f 100644 --- a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/MessageConverterConfigurer.java +++ b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/MessageConverterConfigurer.java @@ -163,9 +163,7 @@ public class MessageConverterConfigurer } else { if (environment != null && environment.containsProperty("spring.cloud.stream.rabbit.bindings." + channelName + ".producer.routing-key-expression")) { - FunctionCatalog catalog = this.beanFactory.getBean(FunctionCatalog.class); - FunctionInvocationWrapper function = catalog.lookup(this.streamFunctionProperties.getDefinition()); - function.setSkipOutputConversion(true); + this.setSkipOutputConversionIfNecessary(); functional = false; } if (!functional) { @@ -175,6 +173,16 @@ public class MessageConverterConfigurer } } + private void setSkipOutputConversionIfNecessary() { + FunctionCatalog catalog = this.beanFactory.getBean(FunctionCatalog.class); + if (catalog != null) { + FunctionInvocationWrapper function = catalog.lookup(this.streamFunctionProperties.getDefinition()); + if (function != null) { + function.setSkipOutputConversion(true); + } + } + } + private boolean isNativeEncodingNotSet(ProducerProperties producerProperties, ConsumerProperties consumerProperties, boolean input) { if (input) {