diff --git a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/InputBindingLifecycle.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/InputBindingLifecycle.java index 6b5e0f912..12022c2e4 100644 --- a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/InputBindingLifecycle.java +++ b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/InputBindingLifecycle.java @@ -16,10 +16,12 @@ package org.springframework.cloud.stream.binding; +import java.util.ArrayList; import java.util.Collection; import java.util.Map; import org.springframework.cloud.stream.binder.Binding; +import org.springframework.util.CollectionUtils; /** * Coordinates binding/unbinding of input binding targets in accordance to the lifecycle @@ -32,7 +34,7 @@ public class InputBindingLifecycle extends AbstractBindingLifecycle { @SuppressWarnings("unused") //It is actually used reflectively since at the moment we do not want to expose it via public method - private Collection> inputBindings; + private Collection> inputBindings = new ArrayList<>(); public InputBindingLifecycle(BindingService bindingService, Map bindables) { super(bindingService, bindables); @@ -49,7 +51,10 @@ public class InputBindingLifecycle extends AbstractBindingLifecycle { @Override void doStartWithBindable(Bindable bindable) { - this.inputBindings = bindable.createAndBindInputs(bindingService); + Collection> bindableBindings = bindable.createAndBindInputs(bindingService); + if (!CollectionUtils.isEmpty(bindableBindings)) { + this.inputBindings.addAll(bindableBindings); + } } @Override