如何仅在 ApplicationReadyEvent 方法完成后 运行 消费者 @StreamListener?

How to run consumer @StreamListener only after ApplicationReadyEvent method completed?

我有一个消费者方法

@StreamListener(target = Sink.INPUT)
method()

我有一个带有事件侦听器的方法

@EventListener(ApplicationReadyEvent.class)
method()...

是否可以配置@StreamListener只在@EventListener方法完成后才开始监听?

根据 Spring Cloud Stream docs,您可以使用 属性 spring.cloud.stream.bindings.<bindingName>.consumer.autoStartup=false 这将阻止 BindingService 自动启动消费者绑定。然后你可以在需要的时候自己做,例如在 ApplicationReadyEvent 个听众中。

public class DelayedBindingStarter {

private final BindingsEndpoint bindingsEndpoint;

@EventListener(ApplicationReadyEvent.class)
public void applicationReady() {
    bindingsEndpoint.changeState("binding_name", BindingsLifecycleController.State.STARTED);
}

}