Я настраиваю небольшое приложение для тестирования недавно созданной служебной шины базового уровня Azure. Я использую Masstransit создать образец издатель:Почему Azure Service Bus думает, что свойство DefaultTimeToLive не установлено?
ServiceBusFactory.New(sbc =>
{
var queueUri = "azure-sb://" + azureNamespace + "/Sample_TestPub";
sbc.UseAzureServiceBus(a =>
{
a.SetDefaultMessageTimeToLive(TimeSpan.FromSeconds(30));
a.ConfigureNamespace(azureNamespace ,
azureNs =>
{
azureNs.SetKey(sharedKey);
azureNs.SetKeyName(keyName);
azureNs.Validate();
});
});
sbc.ReceiveFrom(queueUri);
sbc.UseAzureServiceBusRouting();
})
)
Я использую следующий код для публикации:
text = Console.ReadLine();
var newWhat = new SomethingRequest
{
What = text,
When = DateTime.Now
};
ISomethingResponse response = null;
bus.PublishRequest(newWhat, cfg =>
{
cfg.Handle<ISomethingResponse>(r => response = r);
});
На PublishRequest() Я получаю следующее сообщение об ошибке:
azure-sb://namespace/Sample_TestPub => Invalid connection to host
inner exception: {"The remote server returned an error: (400) Bad Request. SubCode=40000. The property value for 'DefaultMessageTimeToLive' must be between 00:00:01 and 14.00:00:00 when the namespace 'namespace' is using 'Basic' tier.\r\nParameter name: DefaultMessageTimeToLive. TrackingId:67c96bcc-e376-429a-8f22-79227e89f935_G24,TimeStamp:2/3/2015 2:56:33 AM"}
Я не настроил свой автобус в любом случае через портал Azure - есть ли что-то, что мне не хватает? Вызывает ли вызов SetDefaultMessageTimeToLive() то, что я думаю, что он делает?
Не похоже, чтобы у вас было TTL не менее 1 минуты – zaitsman
00:00:01 должно означать «1 секунду» (для C# в LinqPad попробовать TimeSpan.FromSeconds (1) == TimeSpan.Parse («00:00:01») он должен вернуть True) В любом случае я пробовал больше времени с теми же результатами – ryanhallcs
Я не могу ответить на это на транспорте ASB, поскольку я его не писал, но я знаю, что MassTransit 3 имеет раннюю поддержку сервисного автобуса, но пока не готова к использованию. –