Lamina撤消虹吸 - Clojure

时间:2012-10-03 21:15:44

标签: clojure publish-subscribe lamina

我正在使用Lamina来实现基本的pubsub模式。

当客户订阅某个主题时,我会为其创建一个新的channel(如果它尚不存在),然后siphon将其创建到客户端的channel。但是,我无法弄清楚如何反转这个让客户取消订阅。我一直在搜索文档和谷歌搜索,但找不到任何东西。

如何撤消siphon的内容?

2 个答案:

答案 0 :(得分:3)

您可以fork虹吸管上方的上游通道,然后将下游通道接地,或者如果图表允许,您可以关闭不再需要从上游通道虹吸的通道。

ps:我稍后会尝试添加一个例子......

答案 1 :(得分:1)

通常你会建立一个可以关闭的桥接通道,因此链接是:

主题频道 - >桥通道 - >客户端信道

在0.5.0中,这很容易,因为虹吸是可变的:

(defn cancellable-siphon [src dst]
   (let [bridge (channel)]
     (siphon src bridge dst)
     #(close bridge)))