0

启动是运行弹簧反应器的先决条件吗?我正在尝试在常规 Web 应用程序环境中使用 spring reactor。我可以看到反应器配置已创建。消费者已注册。通知被调用。事件不会被触发。什么以及如何检查?

配置

    @Configuration
    @EnableReactor
    public class ReactorConfiguration {
        @Bean
        Environment env() {
            return new Environment();
        }

        @Bean
        Reactor createReactor(Environment env) {
            return Reactors.reactor().env(env).dispatcher(Environment.THREAD_POOL)
                    .get();
        }


    }

注册消费者:

@PostConstruct
public void onStartUp() {
    logger.debug("Registering Consumers");
    reactor.on(Selectors.T(Envelope.class), processParentRequest());
    reactor.on(Selectors.T(Bundle.class), processOptimizerRequest());

    reactor.on(Selectors.$(Constants.LOWER_ASG), processLowerAsgsRequest());
    reactor.on(Selectors.$(constants.SET_CONSUMPTION_LEVEL),
            processConsumersRequest());
    reactor.on(Selectors.$(constants.SET_GENERATION_LEVEL),
            processProducersRequest());
    reactor.on(Selectors.$(constants.SET_STORAGE_SUPPLY_LEVEL),
            processStoragesRequest());
}

private Consumer<Event<Envelope>> processParentRequest() {
    return envelope -> optimizerUpdatingService
            .processParentRequest(envelope);
}

private Consumer<Event<Bundle>> processOptimizerRequest() {
    return bundle -> eventProcessingDispenser
            .processOptimizerRequest(bundle);
}

private Consumer<Event<Envelope>> processLowerAsgsRequest() {
    return envelope -> lowerAsgsProcessingService
            .processLowerAsgRequest(envelope);
}

private Consumer<Event<Message>> processConsumersRequest() {
    return message -> consumersProcessingService
            .processConsumersRequest(message);
}

private Consumer<Event<Message>> processProducersRequest() {
    return message -> producersProcessingService
            .processProducersRequest(message);
}

private Consumer<Event<Message>> processStoragesRequest() {
    return message -> storageProcessingService
            .processStoragesRequest(message);
}
4

2 回答 2

0

Spring Boot 根本不是先决条件,它只是在将 Spring 与 Reactor 一起使用时提供了一些便利。

可能发生任何数量的事情。没有任何细节,很难给出具体的建议。

于 2014-12-29T18:29:20.070 回答
0

简单的答案是否定的。
Spring Boot 不是先决条件,但它使您的引导变得容易。

您所需要的只是在您的类路径中项目 reactor以使用 reactor

于 2019-10-22T06:56:46.277 回答