在我的spout中,我启动了一个spring boot应用程序,它基本上初始化了所有的bean和类。
每当我在远程集群中启动拓扑时,这个spring应用程序在我的Spout的open方法中运行的那一刻,我看到拓扑挂起,我看到我的应用程序的工作日志中没有错误和输出。一段时间后,我的日志文件中会出现相同的消息(尽管有新的时间戳)。可能是群集中出现此问题的原因。
在我在日食中运行的本地群集上,一切正常。
此外,我在哪里可以看到来自我的应用程序的日志消息。我只能在工作日志中看到来自Spouts和Bolts的日志消息。但是我的应用程序打印的其他日志呢?他们需要从我的结局中配置他们的东西吗?
这就是我在Spout =>
的open方法中所做的LOG.info("Inside Synchrnized block for Storm Context");
ApplicationContext context = new AnnotationConfigWebApplicationContext();
LOG.info("Inside Create Application Context block for Storm Context");
SpringApplicationBuilder appBuilder = new SpringApplicationBuilder(Application.class);
LOG.info("Loading Profiles ");
context = (ApplicationContext) appBuilder.profiles("common","common_rabbitmq","common_mongo_db", "common_mysql_db",
"common_topology").run();
LOG.info("Set the Storm Context ");
在我的工作日志中,我只能看到生成的日志
"Inside Synchrnized block for Storm Context";
"Loading Profiles ";
打印后应用程序挂起。它永远不会从run方法返回,也永远不会打印“Set the Storm Context”
PS =>这里的运行方法
appBuilder.profiles("common","common_rabbitmq","common_mongo_db", "common_mysql_db","common_topology").run();
不是在另一个线程上运行它(它不是在不同的线程中启动它)而是它在Spout运行的同一个线程上工作。