繁体   English   中英

如何通过ChangeFeed获得有关Cosmos DB中更改的通知?

[英]How to get notified about change in Cosmos DB through ChangeFeed?

当我浏览MSDN文档时,我所看到的只是在ChangeFeed上“观察”更改。 即使是那里的第一个图,也仅显示了外部服务(Storm,Azure Functions等) ChangeFeed的方向

是否有任何模式(对我来说并不明显)可用于通过ChangeFeed通知有关Cosmos DB中的更改? 还是真的需要内置支持(例如Azure功能)才能使这种“推送”方案起作用?

非常感谢

最近发布了Azure Cosmos DB更改Feed处理器库 ,以使收听Azure Cosmos DB更改Feed更加容易。 它为一组变更提要侦听“工作人员”处理自动租赁管理,以跨Cosmos DB分区进行读取。 使您能够轻松地扩展一组变更提要监听工作人员。 使用此功能,您可以在库的使用者之上构建发布/订阅模型。

话虽如此,Azure Cosmos DB路线图(截至当前日期-8/5/17)上集成了Azure Cosmos DB的变更摘要和Azure功能之间的集成,以帮助推动变更更容易实现。 目前尚未宣布具体日期。 但请继续关注。

想要提供此问题的一些更新,因为到目前为止已经添加了Azure功能支持,并且Change Feed Processor库已完全集成在Java / .NET的Azure SQL SDK中。

通过使用ChangeFeedProcessor API可以很容易地从Change Feed中获取通知,而无需使用Azure Functions-但请记住,由于更改Feed是通过轮询方式查询的,因此这并不是一个“ 推送 ”方案客户端!

代码如下所示:

public static void startChangeFeedProcessor(String hostName, CosmosContainer feedContainer, CosmosContainer leaseContainer) {
  ChangeFeedProcessor.Builder()
    .hostName(hostName)
    .feedContainer(feedContainer)
    .leaseContainer(leaseContainer)
    .options(new ChangeFeedProcessorOptions().leasePrefix("my-lease-prefix")) //not required
    .handleChanges(docs -> {
        for (CosmosItemProperties document : docs) {
            System.out.println("Read document from Change Feed: " + document.toJson(SerializationFormattingPolicy.INDENTED));
        }
    })
    .build()
    .start()
    .subscribe();
}

您可以在此处查看有关Azure CosmosDB更改Feed的更深入的详细信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM