如何在Couchbase中捕获保存或更新事件

Sim*_*san 5 java spring couchbase spring-data-couchbase

我希望能够在Couchbase中更新或创建文档时进行一些数据操作。

文档可以通过Sync Gateway或我们自己的从http服务流式传输数据的代码到达我们的数据库。拥有一个可以拦截所有更新的位置,将是很棒的。

我们正在对此数据运行一个Spring Boot REST API,因此这是拥有拦截器/侦听器的好地方。无论哪种方式,我都倾向于Java解决方案。

数据被编写为JSON而不是使用Spring实体,所以我不能使用仅侦听Entity类事件的ApplicationListener。如果我错了纠正我。我可以找到一些珍贵的设置ApplicationListeners的示例,因此我在这里可能错了,但似乎无法正常工作。

我看到有一个Eventing服务,您可以在其中编写Java脚本,但是由于多种原因,我不希望这样做。我不希望在平台和语言之间分散我们的API代码,也不确定是否可以在我们的系统上运行事件服务,等等。同样,我也可以公开辩论。

就我所知,这仅使DCP显得很低。 https://blog.couchbase.com/couchbases-history-everything-dcp/,但看起来像是完成这项工作的工具。

问题:是否有另一种较低级别的方法来捕获Couchbase中的JSON对象(不是DCP实体)的更新事件。

dna*_*ult 5

免责声明:我为 Couchbase 工作并开发 Java DCP 客户端。

如果您已经评估了 Eventing 服务并确定它不满足您的要求,那么Java DCP 客户端可能值得研究,即使它不受官方支持。它被用于 Kafka、Spark 和 Elasticsearch(所有这些都是开源的)的官方 Couchbase 连接器使用并得到积极维护。

如果您只关心自应用程序启动以来发生的事件,那么使用就像注册回调和启动事件流一样简单。如果您需要记住您在流中的位置并稍后恢复(例如,处理离线时发生的事件),事情会变得更加复杂,但也有针对这种情况示例代码

DCP 协议本身是有据可查的。如果您决定走这条路,至少阅读该文档的架构部分可能会很好。另请注意,由于不支持 Java DCP 客户端,API 可能会更改,恕不另行通知。(正式支持该库并提供更友好的 API 是我们的长期目标之一,但我们还没有做出任何承诺。)