Clojure 三叉戟中DRPC喷口的持续状态

Clojure 三叉戟中DRPC喷口的持续状态,clojure,apache-storm,trident,Clojure,Apache Storm,Trident,我正在为这个项目试验Storm和Trident,我正在使用Clojure和Marceline。我试图扩展上给出的wordcount示例,这样句子spout来自DRPC调用,而不是来自本地spout。我遇到了一些问题,我认为这是因为DRPC流需要有一个结果才能返回到客户端,但是我希望DRPC调用能够有效地返回null,并简单地更新持久化数据 (defn build-topology ([] (let [trident-topology (TridentTopology.)] (

我正在为这个项目试验Storm和Trident,我正在使用Clojure和Marceline。我试图扩展上给出的wordcount示例,这样句子spout来自DRPC调用,而不是来自本地spout。我遇到了一些问题,我认为这是因为DRPC流需要有一个结果才能返回到客户端,但是我希望DRPC调用能够有效地返回null,并简单地更新持久化数据

(defn build-topology
  ([]
   (let [trident-topology (TridentTopology.)]
     (let [
           ;; ### Two alternatives here ###
           ;collect-stream (t/new-stream trident-topology "words" (mk-fixed-batch-spout 3))
            collect-stream (t/drpc-stream trident-topology "words")
          ]
          (-> collect-stream
              (t/group-by ["args"])
              (t/persistent-aggregate (MemoryMapState$Factory.)
                                      ["args"]
                                      count-words
                                      ["count"]))
          (.build trident-topology)))))
代码中有两种选择—一种是使用固定的批处理喷口加载,没有问题,但是当我尝试使用DRPC流加载代码时,会出现以下错误:

InvalidTopologyException(msg:Component: [b-2] subscribes from non-existent component [$mastercoord-bg0])
我相信这个错误来自这样一个事实,即DRPC流必须尝试订阅一个输出,以便有东西返回到客户端-但是
persistent aggregate
不提供任何这样的输出来订阅

那么,我如何设置我的拓扑,使DRPC流导致我的持久化数据被更新

次要更新:看起来这可能不可能:(