在java中风暴中杀死拓扑后的通知

时间:2013-12-19 16:52:03

标签: java apache-storm

当您终止拓扑时,是否有办法通知它实际上已在java中被杀?

对于我的集成测试,我在@Before中使用拓扑启动了一个本地集群,然后在@After中删除它。这样,即使可能需要花费大量时间来运行所有测试,我的拓扑结构也不会同时在其上运行其他测试“变脏”。

例如在Windows中,你不能干净地关闭一个集群(关闭所有东西),有没有办法确保拓扑被杀死,因为我不想启动新的拓扑,如果另一个还活着。

我已经将Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS减少为0以尽快强制杀死工作人员,但仍然需要等待一段时间以确保拓扑被杀死,然后再为下一次测试提交新的“干净”。< / p>

1 个答案:

答案 0 :(得分:1)

对我来说,这听起来更像是一个隔离集成测试的问题,而不是知道什么时候拓扑真的死了。在同一个集群上同时运行多个拓扑应该没有问题,而那些旧工作者,即使他们没有完全停止运转,也不应该干扰作为新部署拓扑结构的新工作者。

如果关注的是工作人员访问Storm群集之外的资源,那么您最好尝试在测试之间隔离这些资源,而不是确保所有Storm工作者都已经死亡。