使用Cosmos DB ChangeFeed,有人可以提供一些异常处理方面的帮助吗? 假设我在更改源中有10个文档,我有一个循环来逐个遍历文档。假设在处理完第5个文档后发生异常。 改变饲料将会发生什么? 到目前为止,我认为整个更改过程被吞下,即异常后的其余文件都消失了。
我只是想知道这是什么回退策略?有没有办法可以完全退出整个批次,所以我不会遗漏任何变化。
答案 0 :(得分:1)
这是一个老问题,但希望其他人可能会发现它很有用。
要处理错误,建议的模式是使用try-catch包装代码。捕获错误并将该文档放入队列(死信)。有一个单独的程序来处理那些产生错误的文档。这样,如果您有100个文档批处理,并且只有一个文档失败,则不必丢弃整个批处理。
第二个原因是,如果您可以继续从Change Feed获取这些文档,那么您可能会丢失文档的最后一个快照。更改Feed仅保留文档的最后一个版本,在其他进程之间可以更改文档。
在您不断修复代码时,很快就会发现死信队列中没有文档。
更改Feed系统会自动调用Azure功能。如果您想回滚更改Feed并控制它的每个方面,您应该考虑使用Change processor Feed SDK。
答案 1 :(得分:0)