Storm序列化/反序列化类字段,但spring上下文不可序列化。在喷嘴/螺栓的准备/退出方法中初始化相同并不能解决问题。
围绕此类情况的最佳做法是什么?您可能希望在群集中使用相同的弹簧上下文?
答案 0 :(得分:0)
首先,基础知识:
将每个工作者视为可以分配执行程序的存储桶。
首次创建和提交拓扑时,您可以控制喷口/螺栓的实例数量:
TopologyBuilder builder = new TopologyBuilder();
builder.setSpout("0-spout", new MySpout(), spoutParallelism).setNumTasks(spoutTasks);
如果您只需要一个整个群集的喷口,则可以将spoutParallelism
和spoutTasks
都设置为1。
这将允许您控制为消息队列创建的连接数。用于连接的密钥应通过storm配置传递到spout / bolt或在open
或prepare
中动态加载。
答案 1 :(得分:0)
您可以考虑storm-jms或storm-kafka或其他类似的事情。即使它不完全符合您的需求,它们也可以帮助您了解如何通过良好实践在风暴中编写代码。