首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何让我的storm拓扑实时工作?

如何让我的storm拓扑实时工作?
EN

Stack Overflow用户
提问于 2013-10-22 14:12:05
回答 2查看 457关注 0票数 0

我已经创建了一个简单的程序来读取文件并完美地生成file.Its。我担心如何使其实时拓扑。我想如果我修改源文件意味着添加一条新记录,它应该出现在我的目标文件中,我将如何做到这一点,而不重新部署我的拓扑在cluster.What上,否则我需要配置以实现此behavior.Below是本地提交拓扑的代码:-

代码语言:javascript
运行
复制
Config conf= new Config();
        conf.setDebug(false);
        conf.put(Config.TOPOLOGY_MAX_SPOUT_PENDING,1);
        TopologyBuilder builder = new TopologyBuilder();



            builder.setSpout("file-reader",new FileReaderSpout(args[0]));
            builder.setBolt("file-writer",new WriteToFileBolt(args[0])).shuffleGrouping("file-reader");
             LocalCluster cluster= new LocalCluster();
                cluster.submitTopology("File-To-File",conf,builder.createTopology());
                Thread.sleep(10000);
                cluster.shutdown();
EN

回答 2

Stack Overflow用户

发布于 2013-10-22 15:23:30

您可能要做的就是使用与storm集群集成的消息队列。在这方面,Kafka可能是一个非常好的候选者。它基本上是一个发布-订阅消息系统。生产者负责将消息添加到队列,另一端的消费者负责检索消息。

因此,如果您将Kafka与storm集成在一起,只要您的生产者向队列发送/发布了一条消息,它就可以用于您的storm拓扑。有一个叫做KafkaSpout的东西,它是一个普通的spout实现,能够从Kafka队列中读取数据。

所以它是这样的,你的拓扑开始于一个KafaSpout (订阅了一个特定的主题),一旦它接收到任何东西就发出,然后将输出链接到你相应的螺栓。

您还可以将Kestrel作为Kafka的替代方案。你应该根据具体解决你的目的的东西来选择。

票数 1
EN

Stack Overflow用户

发布于 2013-10-27 03:32:14

在阅读了另一个答案中的注释之后,您可能需要在更新数据库中的行之前实现一个排队系统

我个人使用过RabbitMQ和Storm,我知道Kafka也是一个选择。具体来说,尝试添加一个队列,以便拓扑的一部分(也可以在Storm之外)读取队列并更新DB,而另一部分实现您想要的处理逻辑。

除非您别无选择,否则实现触发器将事件发送到Storm拓扑可能不是一个好主意。

--迈克尔

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19510252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档