[英]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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.