0

ファイルから読み取り、ファイルを生成する簡単なプログラムを作成しました。完全に機能しています。リアルタイムトポロジを作成する方法について心配しています。ソースファイルを変更すると、新しいレコードが追加され、ターゲットファイルに追加されます。トポロジをクラスターに再デプロイせずにそれを行う方法.この動作を実現するために他に構成する必要があるもの.以下は、トポロジをローカルに送信するコードです:-

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();
4

2 に答える 2

1

おそらくできることは、ストーム クラスターと統合されたメッセージ キューを使用することです。Kafkaは、このための非常に優れた候補になる可能性があります。基本的には、パブリッシュ/サブスクライブのメッセージ システムです。メッセージをキューに追加するプロデューサーと、反対側のコンシューマーがメッセージを取得する責任があります。

したがって、プロデューサーがメッセージをキューに送信/発行するとすぐに Kafka をストームと統合すると、ストーム トポロジで使用できるようになります。Kafka キューから読み取ることができる通常のスパウト実装であるKafkaSpoutと呼ばれるものがあります。

したがって、トポロジは KafaSpout (特定のトピックにサブスクライブ) で始まり、何かを受信するとすぐに出力し、出力を対応するボルトにチェーンします。

Kafka の代わりにKestrelを探すこともできます。目的を正確に解決するものに基づいて選択する必要があります。

于 2013-10-22T07:23:29.540 に答える
0

他の回答のコメントを読んだ後、DB の行を更新する前に、おそらくキュー システムを実装する必要があります。

私は個人的に Storm で RabbitMQ を使用しており、Kafka もオプションであることを知っています。具体的には、トポロジの一部 (Storm の外部でもかまいません) がキューから読み取り、DB を更新し、他の部分が必要な処理ロジックを実装するように、キューを追加してみてください。

イベントを Storm トポロジに送信するトリガーを実装することは、他に選択肢がない場合を除き、おそらく悪い考えです。

-- マイケル

于 2013-10-26T19:32:13.543 に答える