我希望能够在 Couchbase 中更新或创建文档时进行一些数据操作。
文档可以通过 Sync Gateway 或我们自己的代码(从 http 服务流式传输数据)到达我们的数据库。如果有一个地方可以拦截所有更新,那就太好了。
我们正在针对这些数据运行 Spring Boot REST API,因此这将是放置拦截器/侦听器的好地方。不管怎样,我更喜欢 Java 解决方案。
数据以 JSON 形式编写,而不是使用 Spring 实体,因此我无法使用仅侦听实体类上的事件的 ApplicationListener。如我错了请纠正我。我可以找到一些宝贵的设置 ApplicationListener 的示例,所以我在这里可能是错的,但我似乎无法让它工作。
我看到有一个 Eventing 服务,您可以在其中编写 Javascript,但由于多种原因,我不热衷于这样做。我不热衷于跨平台和语言分割我们的 API 代码,不确定我是否可以在我们的系统上运行事件服务等。同样,我愿意接受辩论。
据我所知,DCP 的水平似乎非常低。https://blog.couchbase.com/couchbases-history-everything-dcp/ https://blog.couchbase.com/couchbases-history-everything-dcp/但看起来像是完成这项工作的工具。
问题:是否有一种替代的、级别较低的方法来捕获 Couchbase 中 JSON 对象(而不是 DCP 以外的实体)的更新事件。
免责声明:我在 Couchbase 工作并开发 Java DCP 客户端。
如果您已经评估了 Eventing 服务并认为它不满足您的要求,Java DCP 客户端 https://github.com/couchbase/java-dcp-client可能值得研究,即使它不是正式支持的。它由 Kafka、Spark 和 Elasticsearch(所有这些都是开源的)的官方 Couchbase 连接器使用,并得到积极维护。
如果您只关心自应用程序启动以来发生的事件,那么使用可以像注册回调并启动事件流 https://github.com/couchbase/java-dcp-client/blob/master/examples/src/main/java/com/couchbase/client/dcp/examples/PrintIncomingChanges.java。如果您需要记住您在流中的位置并稍后恢复(例如,处理您离线时发生的事件),事情会变得有点复杂,但是有该案例的示例代码也适用 https://github.com/couchbase/java-dcp-client/blob/master/examples/src/main/java/com/couchbase/client/dcp/examples/StatePersistence.java.
DCP协议本身是有据可查 https://github.com/couchbase/kv_engine/tree/master/docs/dcp。如果您决定走这条路,那么至少阅读一下建筑学该文档的部分。另请注意,由于不支持 Java DCP 客户端,因此 API 可能会更改,恕不另行通知。 (正式支持该库并提供更友好的 API 是我们的长期目标之一,但我们尚未做出任何承诺。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)