Я пытаюсь использовать хранилище таблиц Azure для сохранения данных таймаута, и я испытываю ошибку в средах, отличных от моей локальной разработки машина.NServiceBus 5 с использованием AzureStoragePersistence приводит к «Не удалось получить тайм-ауты из хранилища тайм-аута» на компьютерах, кроме машины разработки
Моя локальная машина создает таблицы тайм-аутов на Azure и умеет эффективно отслеживать данные таймаута. Но, если я размещаю то же программное обеспечение на посылке на другом сервере, он не смог получить таймауты. Я получаю следующее сообщение об ошибке:
2015-02-12 09:43:50,638 [10] WARN NServiceBus.Timeout.Hosting.Windows.TimeoutPersisterReceiver - Failed to fetch timeouts from the timeout storage
System.NullReferenceException: Object reference not set to an instance of an object.
at NServiceBus.Timeout.Hosting.Windows.TimeoutPersisterReceiver.Poll(Object obj) in c:\BuildAgent\work\1b05a2fea6e4cd32\src\NServiceBus.Core\Timeout\Hosting\Windows\TimeoutPersisterReceiver.cs:line 88
at System.Threading.Tasks.Task.Execute()
Кажется, что TimeoutPersister равна нулю в точке он хочет извлечь из него данные.
Я принимаю NServiceBus, используя NServiceBus.Host. Моя конечная конфигурация выглядит следующим образом:
public class EndpointConfig : IConfigureThisEndpoint, AsA_Server
{
public void Customize(BusConfiguration configuration)
{
configuration.UsePersistence<AzureStoragePersistence>();
configuration.EndpointName("MyEndpoint");
configuration.UseTransport<RabbitMQTransport>()
.DisableCallbackReceiver();
configuration.DisableFeature<Sagas>();
configuration.ScaleOut().UseSingleBrokerQueue();();
}
}
И моя app.config содержит:
<connectionStrings>
<add name="NServiceBus/Transport" connectionString="host=myrabbitmqserver;virtualhost=myhost;username=me;password=secret" />
</connectionStrings>
<AzureTimeoutPersisterConfig ConnectionString="DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=myaccouuntkey;" TimeoutManagerDataTableName="TimeoutManager" TimeoutDataTableName="TimeoutData" />
Кто-нибудь есть идея, что я делаю неправильно, или может кто-нибудь мне точку в правильном направлении, исследуя то, что проблема может быть?
Обновление 1 Похоже, что сборка NServiceBus.Azure не загружена на другие машины. Таким образом, свойства azure persistence не инициализируются, что приводит к исключению NullReferenceException при использовании TimeoutPersister.
Обновление 2 После некоторой отладки NServiceBus я заметил, что при извлечении типов из сборки NServiceBus.Azure.dll было выбрано исключение. Он не может загрузить ссылочную сборку Miscrosoft.Data.Services.Client.dll 5.6.0.0. Эта сборка действительно не находится в папке bin. Настоящая версия - 5.6.3.0. Пакет NServiceBus.Azure NuGet поддерживает версии> = 5.6.0.0 < 6.0.0.0, но почему-то он все еще ожидает версию 5.6.0.0. По-прежнему кажется странным, что он работает над моей машиной разработки? Возможно, на моей машине установлены некоторые старые версии Microsoft.Data.Services.Client.dll как часть Azure SDK, которые находятся во время загрузки сборки.
Обновление 3 У меня действительно было где-то в моей системе более старая версия 5.6.0. Переход на пакет Microsoft.Data.xxx до версии 5.6.0 решил проблему на данный момент. Кто-нибудь имеет те же проблемы, что и версии 5.6.3, и нашел решение для этого?
Update 4 Поскольку 2015-02-13 новая версия NServiceBus.Azure выпущена и теперь он требует Microsoft.Data.Services.Client версии 5.6.2.0. Я все еще не могу использовать версию 5.6.3. Добавление перенаправления привязки сборки также не поможет.
Спасибо за помощь Шон. Добавление переадресации привязки было первым, что я пробовал без всякой удачи. Начиная с последнего обновления NServiceBus.Azure (2015-02-13), он теперь жалуется на версию Microsoft.Data.Services.Client версии 5.6.2.0. Есть ли у вас какие-либо другие идеи, как это решить? –
Этот переадресация привязки не будет использоваться для версии 5.6.3, поскольку указанный диапазон только доходит до 5.6 ... изменить oldVersion = "0.0.0.0-5.6.0.0" на oldVersion = "0.0.0.0-6.0.0.0" и newVersion = "5.6.0.0" на newVersion = "5.6.3.0" –