我正在使用Lamina来实现基本的pubsub模式。
当客户订阅某个主题时,我会为其创建一个新的channel
(如果它尚不存在),然后siphon
将其创建到客户端的channel
。但是,我无法弄清楚如何反转这个让客户取消订阅。我一直在搜索文档和谷歌搜索,但找不到任何东西。
如何撤消siphon
的内容?
答案 0 :(得分:3)
您可以fork
虹吸管上方的上游通道,然后将下游通道接地,或者如果图表允许,您可以关闭不再需要从上游通道虹吸的通道。
ps:我稍后会尝试添加一个例子......
答案 1 :(得分:1)
通常你会建立一个可以关闭的桥接通道,因此链接是:
主题频道 - >桥通道 - >客户端信道
在0.5.0中,这很容易,因为虹吸是可变的:
(defn cancellable-siphon [src dst]
(let [bridge (channel)]
(siphon src bridge dst)
#(close bridge)))