4

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

当客户端订阅一个主题时,我channel为它创建一个新主题(如果它不存在),然后siphon将它添加到客户端的channel. 但是,我不知道如何扭转这个让客户退订。我一直在搜索文档和谷歌搜索,但找不到任何东西。

我如何撤消所做siphon的操作?

4

2 回答 2

3

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

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

于 2012-10-04T00:34:05.073 回答
1

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

主题频道 -> 桥接频道 -> 客户频道

在 0.5.0 中,这很容易,因为 siphon 是可变参数:

(defn cancellable-siphon [src dst]
   (let [bridge (channel)]
     (siphon src bridge dst)
     #(close bridge)))
于 2012-10-04T06:45:12.623 回答