Использование EventProcessorHost в веб-задании с несколькими экземплярами - исключение Microsoft.ServiceBus.Messaging.LeaseLostException
Я использую EventProcessorHost в webjob с несколькими экземплярами - исключение 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 Ожидаемый StatusCode, 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(RESTCommand
1 cmd, HttpWebResponse или Exception ex, OperationContext ctx) в c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Blob\CloudBlob.cs: строка 3186 в 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: строка 299
--- Конец внутренней трассировки стека исключений --- в Microsoft.WindowsAzure.Storage.Core.Executor.Executor.EndExecuteAsync[T](результат IAsyncResult) в c: \ Program Files (x86) \ Jenkins \ workspace \ release_dotnet_master \ Lib \ ClassLibraryCommon \ Core \ Executor \ Executor. cs: строка 50 в Microsoft.WindowsAzure.Storage.Blob.CloudBlob.EndRenewLease(IAsyncResult asyncResult) в каталоге c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Blob\CloudBlob.cs: 1982: строка:.WindowsAzure.Storage.Core.Util.AsyncExtensions.<> C__DisplayClass4.b__3(IAsyncResult ar) в c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Core\Util\AsyncExtensions.cs: строка 114
--- Конец трассировки стека из предыдущего расположения, где было сгенерировано исключение --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Задача задачи) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Задача задачи) в Microsoft.ServiceBus.Messaging.BlobLeaseManager.d__23.MoveNext()
--- Служба завершения трассировки внутреннего исключения Microsoft --- в конце.Messaging.BlobLeaseManager.d__23.MoveNext () --- Конец трассировки стека из предыдущего местоположения, в котором было сгенерировано исключение --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) в System.Runtime.CompilerServices.TaskAwaiter. HandleNonSuccessAndDebuggerNotification (Задача) в Microsoft.ServiceBus.Messaging.BlobLeaseManager.d__24.MoveNext()
--- Конец трассировки стека из предыдущего местоположения, где было сгенерировано исключение --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSucc ess (Задача задачи) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Задача задачи) в RoutingServiceWebJob.DataProcessorFactory.EventHubDataProcessor.d__37. 163
Я читаю сообщения по одному. Пожалуйста, предложите.
1 ответ
Мне удалось избежать этого, установив имя хоста в качестве уникальной строки. Например
var eventProcessorHostName = Guid.NewGuid().ToString();