couchbase - 存储桶内更改的异步客户端通知

标签 couchbase

环境:C# Winforms,SDK 1.2

我是 Couchbase 的新手,所以我可能错过了一些东西。我想要实现的是,当 XDCR 复制文档后更新时,向客户端推送通知。我的用例如下:

  • 两个集群(CL1、CL2),每个集群有一个节点
  • 两个客户端(K1、K2),K1 连接到 CL1,K2 连接到 CL2
  • K1 对 DocA 进行了更改
  • DocA 通过 XDCR 从 CL1 --> CL2 复制
  • 一旦 DocA 进入 CL2,客户端 K2 就会收到通知

这是 Observe() 方法可以做到的事情还是还有其他方法?使用 TAP 似乎有风险,因为这是一个内部 API,可能会发生变化。

--D

最佳答案

答案也发布到 Couchbase 论坛,但复制到这里... http://www.couchbase.com/forums/thread/notify-client-change#comment-1008518

客户端不知道 XDCR 复制,并且没有任何与 XDCR 事件 Hook 。不幸的是,客户端实例无法知道 key 已复制到其集群。

假设 K2 需要对已复制到 C2 的数据进行操作,一个(诚然未经测试的)替代方案是让 C2 复制到 ASP.NET 端点。在这种情况下,您可以使用我最近编写的 Nancy 端点 - http://blog.couchbase.com/xdcr-aspnet-and-nancy .

  1. K1 将 key 写入 C1
  2. C1(通过 XDCR)将 key 发送给 C2
  3. C2(通过 XDCR)将 key 发送到 Nancy 端点
  4. K2 在 IReplicationHandler 子类内部使用(有关详细信息,请参阅博客)

基本上,在 C1 XDCR 复制到 C2 后,您可以从 C2 推送到您的应用程序,该应用程序将定义 XDCR 端点,可以通过 Nancy 或将代码从我的 Nancy 应用程序复制到您现有的 Web 应用程序中。端点主机并不重要,重要的是 URI(例如/pools)和 JSON 响应。同样,这里的想法是,您将 K2 应用程序视为第三个 XDCR 端点,但只有在 C2 从 C1 获取 key 后才接收 key 。

观察用于指定存储或删除 key 时的持久性要求。例如,您可以要求客户端当且仅当 key 持久保存到其主节点并复制(在内存或磁盘中)到两个副本节点时才认为存储操作成功。 http://www.couchbase.com/docs/couchbase-sdk-net-1.2/couchbase-sdk-net-st ...

关于couchbase - 存储桶内更改的异步客户端通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14393264/

相关文章:

java - 为什么 Spring 应用程序在使用 docker compose 运行时无法连接到 couchbase

scala - 玩Framework + Scala + Couchbase?

python - 如何使用 Python SDK 连接 couchbase 集群?

python - 这个 Python 请求错误是什么意思?

node.js - 在 Node 6.11.5 上安装 couchbase 失败

java - Couchbase Java SDK 存储桶连接管理

c# - 通过 C# 给出 TTL 后 Couchbase key 未过期

java - 无法连接到 couchbase 服务器

java - Spring Data for Couchbase - 增加特殊计数器文档的数值

caching - Couchbase:是否可能有陈旧的冷缓存?