У меня возникли проблемы с развертыванием службы в облаке. Точнее, используя NServiceBus с Azure. Я повторил свои шаги 3 раза (создал тот же проект 3 раза) с теми же результатами, поэтому я действительно надеюсь, что кто-то может указать мне в правильном направлении.NServiceBus в Azure Deployment Trouble
UPDATE -> 24/02/2014
Понижены рейтинги сборки, упомянутые в должности до версии 5.1.3 и развертывания теперь работает нормально и очереди созданы. Возможно, в последней версии есть что-то, что приводит к сбою развертывания.
Во-первых, я создаю свои предпосылки, используя портал:
- Cloud Service право Скидка
- Хранение счета право скидка
- Service Bus право discountbus
Все 3, указанные выше, были созданы с использованием Quick Create.
Назад в Visual Studio, создано:
- Новое Решение под названием AzureTest
- Новый облачная Проект под названием AzureTest
- Новый работник Роль проект под названием Скидка
Сделаны ссылки на следующие сборках через NuGet:
- NServiceBus 5.2.0
- NServiceBus.Azure 6.2.0
- NServiceBus.Hosting.Azure 6.2.0
- NServiceBus. Azure.Transports.WindowsAzureServiceBus 6.2.0
Добавлен новый a ssembly под названием «Сообщения», который будет содержать мои команды и события, которые будут опубликованы.
Изменены настройки в моем проекте облачного сервиса (AzureTest), чтобы быть так, что я могу получить регистрацию:
<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString"/>
Мои EndpointConfig выглядит следующим образом:
public class EndpointConfig : IConfigureThisEndpoint, AsA_Worker
{
public void Customize(BusConfiguration configuration)
{
// Nothing too complicated for now, just anything where the namespace contains commands or events
configuration.Conventions().DefiningCommandsAs(x => x.AssemblyQualifiedName != null && x.AssemblyQualifiedName.Contains(".Commands."));
configuration.Conventions().DefiningEventsAs(x => x.AssemblyQualifiedName != null && x.AssemblyQualifiedName.Contains(".Events."));
configuration.UseTransport<AzureServiceBusTransport>();
configuration.UsePersistence<AzureStoragePersistence>();
// Docs don't state to do this however logs show this is required
configuration.DisableFeature<TimeoutManager>();
configuration.DisableFeature<SecondLevelRetries>();
configuration.DisableFeature<Sagas>();
}
}
WorkerRole просто пытается начать и остановить NServiceBusRole:
public class WorkerRole : RoleEntryPoint
{
private NServiceBusRoleEntrypoint nsb = new NServiceBusRoleEntrypoint();
public override bool OnStart()
{
Trace.TraceInformation("Discount has been started");
nsb.Start();
return base.OnStart();
}
public override void OnStop()
{
Trace.TraceInformation("Discount has stopped");
nsb.Stop();
base.OnStop();
}
}
ServiceConfiguration.Cloudcscfg содержит:
<ConfigurationSettings>
<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="DefaultEndpointsProtocol=https;AccountName=discount;AccountKey=[my key]" />
</ConfigurationSettings>
Config секция для NSB:
<MessageForwardingInCaseOfFaultConfig ErrorQueue="error" />
<TransportConfig MaximumConcurrencyLevel="5" MaxRetries="2" MaximumMessageThroughputPerSecond="0" />
<UnicastBusConfig>
<MessageEndpointMappings>
<add Assembly="Messages" Type="Messages.Commands.TestCommand" Endpoint="Discount" />
</MessageEndpointMappings>
</UnicastBusConfig>
<connectionStrings>
<add name="NServiceBus/Transport" connectionString="Endpoint=sb://discountbus.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=[my key]" />
</connectionStrings>
При попытке развернуть с помощью правой кнопкой мыши проект облачных услуг и публиковать я получаю обратную связь:
09:34:29 - Применение расширения диагностики.
9:34:50 - Подготовка развертывания для AzureTest - 24/02/2015 9:34:20 с Subscription ID 'e3dbff72-f1c1-43c8-b052-3404ea5c168e' с помощью URL Management Service 'https://management.core.windows.net/' ...
09:34:50 - Подключение ...
09:34:50 - Проверка учетной записи хранения 'discount' ...
09:34:50 - Загрузка пакета ...
09:34:56 - Создание. ..
09:35:28 - Созданный идентификатор развертывания: e464ba5932fc402faf6945e8a983b52e.
09:35:28 - Экземпляр 0 роли Скидка прекращена
09:35:28 - Начальная ...
09:35:45 - Инициализация ...
09:35:45 - Экземпляр 0 of the role Скидка находится в неизвестном состоянии
09:36:18 - Экземпляр 0 ролевой скидки создает виртуальная машина
09:37:23 - Экземпляр 0 из ролевой скидки Начало виртуальной машины
09:39:33 - Экземпляр 0 of Скидка находится в неизвестном состоянии
09:40:06 - Экземпляр 0 роли Скидка занята
Подробнее: Подготовка к запуску роли ... Система Инициализация. [2015-02-24T09: 39: 43Z]
09:42:10 - Экземпляр 0 роли Скидка перезапускается Подробности: Роль обнаружила ошибку и остановлена. Система была успешно инициализирована. [2015-02-24T09: 41: 57Z]
9:44:14 - Instance 0 ролевого Дисконт является занят Детали: Восстановление роли ... Система была в
Пробовал отладки это локально тоже с проект облачных сервисов устанавливается как запуск, но получаю сообщение об ошибке с указанием:
«необработанное исключение типа „System.Configuration.ConfigurationErrorsException“произошло в WaWorkerHost.exe.» К сожалению, дальнейшие подробности не приводятся.
Проводник сервера показывает мое хранилище, но отображаются только таблицы показателей.
Надеясь, что кто-то покажет мне свет и направит меня туда, где я ошибся. Получил довольно эмоциональным со всем этим сейчас и пытаюсь сделать этот простой проект в течение почти 3 дней :(
Cheers, DS.
Я считаю, что проблема была связана с версией NServiceBus, которую я использовал. Теперь я не могу быть на 100% на этом, но уверен, что это так. Я использовал 5.1.3, но я сделал простое обновление пакета до 5.2.0, и он сработал. Это может быть проблема, связанная с конфигурацией, но я буду исследовать ее дальше. –