Webjob 调用分离 AppDomains
Webjob Invocations Separate AppDomains
在我们连续的网络作业中有一个场景让我们有点困惑。我们有非常详尽的日志记录,它绘制的图片似乎表明两条消息因同一个 webjob 调用而出队。时间戳似乎支持这一点。但更引人注目的是例外。
在我们的代码中的某个时刻,我们正在向字典添加一个键。我们观察到的异常是试图将重复的键添加到该字典中。如果 webjob 方法的同一个实例同时将 2 条消息从队列中取出,那么这似乎是唯一有意义的事情。因为字典是在每次调用时使用 new 关键字创建的,即每次调用 dequeue 方法都会在内存中创建一个单独的对象。
简而言之,我的问题是,观察该队列的连续 运行 webjob 的同一个 instance/method 是否可以同时使 2 条消息出列?
默认情况下是并行执行,因此出队消息的顺序会有所不同。您可以将 batchsize 设置为 1 https://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-webjobs-sdk-storage-queues-how-to/#config
在我们连续的网络作业中有一个场景让我们有点困惑。我们有非常详尽的日志记录,它绘制的图片似乎表明两条消息因同一个 webjob 调用而出队。时间戳似乎支持这一点。但更引人注目的是例外。
在我们的代码中的某个时刻,我们正在向字典添加一个键。我们观察到的异常是试图将重复的键添加到该字典中。如果 webjob 方法的同一个实例同时将 2 条消息从队列中取出,那么这似乎是唯一有意义的事情。因为字典是在每次调用时使用 new 关键字创建的,即每次调用 dequeue 方法都会在内存中创建一个单独的对象。
简而言之,我的问题是,观察该队列的连续 运行 webjob 的同一个 instance/method 是否可以同时使 2 条消息出列?
默认情况下是并行执行,因此出队消息的顺序会有所不同。您可以将 batchsize 设置为 1 https://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-webjobs-sdk-storage-queues-how-to/#config