Я, вероятно, упускаю что-то очевидное в этой проблеме, но я не могу развернуть конечную точку в качестве рабочей роли Azure для работы в производственной среде; он отлично работает под локальным эмулятором Azure.
Вот шаги, которые я предпринял, чтобы воспроизвести эту проблему, используя один из примеров проектов, поставляемых с образцами nservicebus:
- загруженные образцы из сборки 3.2.8.
- Использовали пример AzurePubSub и изменили конфигурацию в веб-роли и рабочей роли, чтобы использовать фактическое расположение хранилища, а не локальное хранилище разработки.
- Запуск локально с помощью эмулятора локальных вычислений, чтобы убедиться, что веб-роль и рабочая роль работают должным образом.
- Развернут в производственной среде. веб-роль работает и помещает сообщения в очередь, как и ожидалось, но рабочая роль не обрабатывает сообщение.
исключений нет, и рабочая роль развертывается и запускается, как и ожидалось; он просто не обрабатывает сообщения.
Я надеюсь, что мне не хватает чего-то простого, и кто-то сталкивался с этой проблемой раньше.
Обновление: я вижу, что приведенная ниже запись журнала находится в журнале событий роли. Является ли проблема просто тем, что профиль ведения журнала по умолчанию пытается получить доступ к 127.0.0.1:10000?
Вот профиль, который настроен для использования в образце:
NServiceBus.Production NServiceBus.OnAzureTableStorage NServiceBus.WithAzureStorageQueues
А вот и полная запись в журнале событий:
An unhandled exception occurred. Type: System.Exception Process ID: 2512
Process Name: WaWorkerHost
Thread ID: 6
AppDomain Unhandled Exception for role OrderService_IN_0
Exception: Exception when starting endpoint, error has been logged. Reason: Unable to connect to the remote server
at NServiceBus.Hosting.GenericHost.Start()
at NServiceBus.Hosting.Azure.RoleEntryPoint.Run()
at Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.StartRoleInternal()
at Microsoft.WindowsAzure.ServiceRuntime.Implementation.Loader.RoleRuntimeBridge.<StartRole>b__1()
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
Inner Exception: Unable to connect to the remote server
at Microsoft.WindowsAzure.Diagnostics.Management.RoleInstanceDiagnosticManager.<.ctor>b__2(Object sender, ErrorEventArgs args)
at Microsoft.WindowsAzure.Diagnostics.ControlChannel.GetControlContainer()
at Microsoft.WindowsAzure.Diagnostics.ControlChannel.set_StartupInfo(DiagnosticMonitorStartupInfo value)
at Microsoft.WindowsAzure.Diagnostics.Management.RoleInstanceDiagnosticManager..ctor(CloudStorageAccount storageAccount, String deploymentId, String roleName, String roleInstanceId)
at NServiceBus.Integration.Azure.AzureAppender.ConfigureAzureDiagnostics()
at NServiceBus.SetLoggingLibrary.Log4Net(Configure config, Object appenderSkeleton)
at NServiceBus.SetLoggingLibrary.Log4Net[TAppender](Configure config, Action`1 initializeAppender)
at System.Collections.Generic.List`1.ForEach(Action`1 action)
at NServiceBus.Hosting.Profiles.ProfileManager.ActivateProfileHandlers()
at System.Collections.Generic.List`1.ForEach(Action`1 action)
at NServiceBus.Configure.Initialize()
at NServiceBus.Hosting.GenericHost.Start()
Inner Exception: No connection could be made because the target machine actively refused it 127.0.0.1:10000
at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)
Обновление – решение. Проблема заключалась в том, что в примере проекта, который я использовал в качестве базового, использовалось старое имя идентификатора строки подключения "Diagnostics.ConnectionString", а приложение NServiceBus Azure Logging Appender искало более новый идентификатор Azure. который обозначает место хранения диагностических данных «Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString». Переименование идентификатора решило проблему.