2016-05-23 5 views
2

最近私はApache Stormと仕事を始めました。私はClojure Storm DSLLeiningenとストームを使用します。Clojure Storm Flux

嵐のトポロジ管理用の非常にクールなツールがあります:Storm Flux

私の質問は次のとおりです:clojureで嵐でコーディングしているときに、どのようにしてFluxを使用できますか?

+0

... bolts: - id: "myBolt" className: "your.namespace.boltname" parallelism: 1 ... 

)ので、これらのクラスファイルを柔軟に使用することができます。 –

+0

ありがとう@ MatthiasJ.Sax、私はこの解決策を試みるが、私は何かが恋しい。私のnsで私は使用します:gen-classと私はdefspoutマクロを持っています。しかし、コンパイルされたファイルはクラスを生成するためにIRichSpoutオブジェクトを受け取っていませんでした:(理解しましたか? –

+0

または少しの例がありますか? –

答えて

0

私は解決策を見つけた:

(ns your.namespace.boltname 
    (:use 
    [org.apache.storm clojure config]) 
    (:gen-class :implements [org.apache.storm.topology.IRichBolt])) 

(defbolt my-bolt 
     ["data"] 
     [tuple collector] 
     (emit-bolt! collector [(f (.getString tuple 0))] :anchor tuple) 
     (ack! collector tuple)) 

(defn -execute [this tuple] 
(.execute my-bolt tuple)) 

(defn -prepare [this conf context collector] 
(.prepare my-bolt conf context collector)) 

(defn -cleanup [this] 
(.cleanup my-bolt)) 

(defn -declareOutputFields [this output] 
(.declareOutputFields my-bolt output)) 

(defn -getComponentConfiguration [this] 
(.getComponentConfiguration my-bolt)) 

your project.clj:aot :allを追加することを忘れないでください。

など、あなたのフラックスtopology.yaml何かで:私はわからないが、私はあなたがそれぞれの注ぎ口のクラスファイル(、ボルトにあなたのClojureコードをコンパイルする必要があると思いますすべて:)

+0

@ MatthiasJ.Saxこのソリューションについてどう思いますか?時間を稼働する前にクラスが必要になるため、reifyを使用できませんでした –

関連する問題