我有一个原型Storm应用程序,该应用程序读取STOMP流并将输出存储在HBase上。它可以工作,但不是很灵活,我试图与我们的其他应用程序以更一致的方式进行设置,但运气不好,无法确定当前使用Storm的方式。我们使用spring- jms类,但不是在标准spring方法中使用它们,而是在运行时创建它们并手动设置依赖项。
这个项目:https : //github.com/granthenke/storm-spring看起来很有希望,但是由于将风暴罐子放入apache孵化器并重新包装,所以它没有被摸上几年,也无法正确构建。
是否有我所缺少的东西,或者将这些东西整合在一起不值得我花些时间?
实际上,风暴弹簧似乎是您想要的,但它没有更新并且有限制(例如,无法在螺栓/喷口上定义任务等)。也许您应该进行自己的集成?
不要忘记您的目标:一个有很多工作人员的集群。当您将风暴数据库(例如重新平衡)部署到另一名工作人员上时,spring的行为如何?这是否意味着在Storm部署目标螺栓/喷口并定义执行程序之前,必须在启动时在工作JVM上实例化新的Spring上下文?
恕我直言,如果您仅在Spring配置中定义Storm组件,则它应该可以工作(拓扑的启动配置,然后Storm仅管理对象),但是如果您依靠Spring管理其他组件(spring- jms似乎如此),则可以例如,在拓扑结构重新平衡时变得混乱(每个工人单个/ jvm?还是整个拓扑结构?)。
由您决定是否值得解决这个问题,对于Spring配置,我的担心是,您很容易忘记风暴拓扑(似乎它是一个JVM,但可以更多)。我个人为每个类加载器定义了自己的单例(例如,静态的final,如果需要延迟实例化,则使用双重检查锁定),因为它不会隐藏(中高)复杂性。