- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
全部,
我正在使用 Change Feed Processor Library。想知道处理服务失败的最佳方法以及 ProcessChangesAsync 方法中的异常/错误场景。以下是我所指的事件。
1) 服务失败 - 具有处理器库的服务在某些操作中间崩溃。如何从同一文档(失败实例的文档)启动流程?是否有任何内置机制可以让更改提要从最后一个失败的文档开始?例如。假设,在当前批次中,我们成功处理了 10 个 docs.5,然后由于网络故障或其他原因导致服务中断。一旦服务重新启动,我的流程是否会从第 6 个文档开始?如何实现这一目标?
2) 异常和错误 - ProcessChangesAsync 方法中的任何错误都可以在全局级别使用 try catch 处理,但如何保留这些失败记录并使其可用于下一批?再次,在更改提要过程中寻找任何可用的内置机制。
最佳答案
1) 处理器库,默认情况下,在成功运行 ProcessChangesAsync
后检查点.最新library version ,您可以自定义 Checkpointer 以在需要时执行手动检查点。如果由于某种原因处理器在检查点之前关闭,那么它将从存储在 Leases 集合中的最后一个成功检查点开始下一个处理。在您的情况下,它将再次从第一个文档开始,因此您永远不会丢失更改,但您可能会遇到双重处理(这是“至少一次”模型)。
2) 没有可以利用的内置机制来处理 ProcessChangesAsync
中的异常。是你的责任。您不仅可以添加全局 try/catch,而且在循环遍历文档的情况下,在循环内添加 try/catch 以处理失败的文档(可能将其发送到队列以供以后分析/后处理)不会丢失批次。如果您需要记录这些错误(我假设这就是您所说的持续错误的意思?),那么最新版本与 LibLog 兼容。 ,因此插入您自己的自定义日志记录非常简单:
using Microsoft.Azure.Documents.ChangeFeedProcessor.Logging;
var hostName = "SampleHost";
var tracelogProvider = new TraceLogProvider(); //You can use any provider supported by LibLog
using (tracelogProvider.OpenNestedContext(hostName))
{
LogProvider.SetCurrentLogProvider(tracelogProvider);
// After this, create IChangeFeedProcessor instance and start/stop it.
}
public async Task ProcessChangesAsync(IChangeFeedObserverContext context, IReadOnlyList<Document> documents, CancellationToken cancellationToken)
{
try
{
foreach(var document in documents)
{
try
{
// Do your work for the document
}
catch(Exception ex)
{
// Something happened with the current document, handle it, send it to a queue / another storage to analyze, log it. This catch will make the loop continue with the next.
}
}
}
catch(Exception ex)
{
// Something unhandled happened, log it and avoid throwing it again so the next batch is processed
}
}
关于azure-cosmosdb - Cosmo ChangeFeed - 错误、异常和服务失败场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51931103/
将类库项目从 .netcore2.2 迁移到 .netcore 3.1 时,出现以下错误: Error CS1061 'IMutableEntityType' does not contain a d
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
这里有人使用带有旋转纬度经度坐标的 MetPy 吗?是否可以?我想要完成的是制作数据的垂直横截面。我用 xr.open_dataset 打开了 netCDF 文件: Dimensions:
全部, 我正在使用 Change Feed Processor Library。想知道处理服务失败的最佳方法以及 ProcessChangesAsync 方法中的异常/错误场景。以下是我所指的事件。
我的数据库包含来自由租户 ID 标识的多个数据源的数据。虽然一个租户拥有数百万条记录,但另一个租户只有 75 条记录,如下面的屏幕截图 所示。 当我使用以下代码查询数据时 var count =
这个错误是突然发生的。使用 Visual Studio 2017,System.Net.Http.Formatting 问题已经好几年没有被提起了。 我只在网页上看到这条消息: Could not l
我在 Visual Studio 2019 中发布 azure 函数时收到以下警告。 Could not evaluate 'Cosmos.CRTCompat.dll' for extension m
我在安装了内置 Python 2.7 的 Mac 上工作 我使用 sudo easy_install pip 安装了 pip 我使用 sudo pip install azure 安装了 azure
我是一名优秀的程序员,十分优秀!