我正在使用Lamina来实现基本的 pubsub 模式。
当客户端订阅一个主题时,我channel
为它创建一个新主题(如果它不存在),然后siphon
将它添加到客户端的channel
. 但是,我不知道如何扭转这个让客户退订。我一直在搜索文档和谷歌搜索,但找不到任何东西。
我如何撤消所做siphon
的操作?
我正在使用Lamina来实现基本的 pubsub 模式。
当客户端订阅一个主题时,我channel
为它创建一个新主题(如果它不存在),然后siphon
将它添加到客户端的channel
. 但是,我不知道如何扭转这个让客户退订。我一直在搜索文档和谷歌搜索,但找不到任何东西。
我如何撤消所做siphon
的操作?
您可以fork
将上游通道置于虹吸管上方,然后将下游通道接地,或者如果您的图表允许,您可以关闭您不再希望从上游通道虹吸的通道。
ps:我稍后会尝试添加一个示例...
通常,您会创建一个可以关闭的桥接通道,因此链接是:
主题频道 -> 桥接频道 -> 客户频道
在 0.5.0 中,这很容易,因为 siphon 是可变参数:
(defn cancellable-siphon [src dst]
(let [bridge (channel)]
(siphon src bridge dst)
#(close bridge)))