-1

我在具有多个实例的 webjob 中使用 EventProcessorHost - 给出异常 Microsoft.ServiceBus.Messaging.LeaseLostException。特别是只有一个实例给出了这个例外。

当我将它作为单个实例运行时,它没有给出任何异常

Microsoft.ServiceBus.Messaging.LeaseLostException:引发了“Microsoft.ServiceBus.Messaging.LeaseLostException”类型的异常。---> Microsoft.WindowsAzure.Storage.StorageException:远程服务器返回错误:(409)冲突。---> System.Net.WebException:远程服务器返回错误:(409)冲突。在 Microsoft.WindowsAzure.Storage.Shared.Protocol.HttpResponseParsers.ProcessExpectedStatusCodeNoException[T](HttpStatusCode expectedStatusCode、HttpStatusCode actualStatusCode、T retVal、StorageCommandBase1 cmd, Exception ex) in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\Common\Shared\Protocol\HttpResponseParsers.Common.cs:line 50 at Microsoft.WindowsAzure.Storage.Blob.CloudBlob.<>c__DisplayClass33.<RenewLeaseImpl>b__32(RESTCommand1 cmd, HttpWebResponse resp, Exception ex, OperationContext ctx) 在 c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Blob\CloudBlob.cs:line 3186 at Microsoft.WindowsAzure.Storage.Core.Executor .Executor.EndGetResponse[T](IAsyncResult getResponseResult) 在 c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Core\Executor\Executor.cs:line 299 --- 内部异常堆栈跟踪结束--- 在 c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Core\Executor\Executor 中的 Microsoft.WindowsAzure.Storage.Core.Executor.Executor.EndExecuteAsync[T](IAsyncResult 结果)。 c: 第 50 行 Microsoft.WindowsAzure.Storage.Blob.CloudBlob.EndRenewLease(IAsyncResult asyncResult) 在 c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Blob\CloudBlob.cs:Microsoft.WindowsAzure.Storage.Core.Util.AsyncExtensions 的第 1982 行。<>c__DisplayClass4.b__3(IAsyncResult ar) in c: \Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Core\Util\AsyncExtensions.cs:line 114 --- 在 System.Runtime.CompilerServices 处从先前引发异常的位置结束堆栈跟踪.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.ServiceBus.Messaging.BlobLeaseManager.d__23.MoveNext() --- End of internal exception stack trace --- at Microsoft .ServiceBus.Messaging.BlobLeaseManager.d__23。MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 Microsoft .ServiceBus.Messaging.BlobLeaseManager.d__24.MoveNext() --- 在 System.Runtime.CompilerServices 的 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 处从先前引发异常的位置结束堆栈跟踪。 TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at RoutingServiceWebJob.DataProcessorFactory.EventHubDataProcessor.d__37.MoveNext() in d:\a\1\s\RoutingServiceWebJob\DataProcessorFactory\EventHubDataProcessor.cs:line 163ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.ServiceBus.Messaging.BlobLeaseManager.d__24.MoveNext() --- 从之前抛出异常的位置结束堆栈跟踪---在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 RoutingServiceWebJob.DataProcessorFactory.EventHubDataProcessor.d__37.MoveNext() 在 d:\a\1\s\ RoutingServiceWebJob\DataProcessorFactory\EventHubDataProcessor.cs:第 163 行ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.ServiceBus.Messaging.BlobLeaseManager.d__24.MoveNext() --- 从之前抛出异常的位置结束堆栈跟踪---在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 RoutingServiceWebJob.DataProcessorFactory.EventHubDataProcessor.d__37.MoveNext() 在 d:\a\1\s\ RoutingServiceWebJob\DataProcessorFactory\EventHubDataProcessor.cs:第 163 行MoveNext() --- 从先前引发异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 RoutingServiceWebJob 的 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) .DataProcessorFactory.EventHubDataProcessor.d__37.MoveNext() 在 d:\a\1\s\RoutingServiceWebJob\DataProcessorFactory\EventHubDataProcessor.cs:line 163MoveNext() --- 从先前引发异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 RoutingServiceWebJob 的 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) .DataProcessorFactory.EventHubDataProcessor.d__37.MoveNext() 在 d:\a\1\s\RoutingServiceWebJob\DataProcessorFactory\EventHubDataProcessor.cs:line 163

我一次读一条消息。请建议。

4

1 回答 1

0

我可以通过将主机名设置为唯一字符串来避免这种情况。例如

var eventProcessorHostName = Guid.NewGuid().ToString();
于 2018-02-14T22:04:08.200 回答