如何与Spring Boot servlet一起正确运行Kinesis? Worker.run()阻止了DispatchServlet,对其进行了修复,但不确定解决方案是否理想

时间:2019-07-19 21:53:58

标签: java spring multithreading spring-boot amazon-kinesis

我有一个不是RESTful的服务,但是需要运行状况检查终结点。因此,我添加了一个,但注意到即使Tomcat服务器显然已启动,我也无法在本地对其进行访问。在输出中,DispatchServlet没有选择新的/ health端点。

有一个在onStart上运行的函数,它启动了我的Kinesis Worker,它看起来像这样:

@EventListener(ContextRefreshedEvent.class)
public void onStart() {
    log.info("Kicking off Kinesis Consumer...");


        Worker worker = new Worker.Builder()
                .config(getKinesisConfig())
                .recordProcessorFactory(kinesisFactory)
                .build();
        worker.run();

}

当我将其更改为此时,我可以达到运动终点,就像Kinesis工人所做的那样,一切都很好:

@EventListener(ContextRefreshedEvent.class)
public void onStart() {
    log.info("Kicking off Kinesis Consumer...");

    new Thread(() -> {
        Worker worker = new Worker.Builder()
                .config(getKinesisConfig())
                .recordProcessorFactory(kinesisFactory)
                .build();
        worker.run();
    }).start();
}

我的问题是:这是同时运行Kinesis进程和Web服务器的正确方法吗?对此有更好的做法吗?

0 个答案:

没有答案