为什么Azure Service Bus认为DefaultTimeToLive属性未设置?

时间:2015-02-03 03:08:06

标签: c# azure azureservicebus masstransit

我正在设置一个小应用程序来测试新创建的基本层Azure服务总线。我正在使用Masstransit建立一个样本发布者:

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);
                });

On PublishRequest()我收到以下错误:

  

azure-sb:// namespace / Sample_TestPub =&gt;与主机的连接无效

     

内部异常:{“远程服务器返回错误:(400)错误   请求。子码= 40000。属性值为   'DefaultMessageTimeToLive'必须介于00:00:01和14.00:00:00之间   命名空间“命名空间”使用“基本”层时。\ r \ n \ nParameter   name:DefaultMessageTimeToLive。   TrackingId:67c96bcc-e376-429a-8f22-79227e89f935_G24,时间戳:2015年2月3日   2:56:33 AM“}

我还没有通过Azure门户配置我的总线 - 是否有我遗漏的东西? SetDefaultMessageTimeToLive()调用是否不符合我的想法?

1 个答案:

答案 0 :(得分:1)

我使用NServiceBus中的示例应用程序得到了同样的错误。当我将Azure Service Bus切换到标准层而不是Basic 时,它开始工作。我不知道为什么。然而,我的直觉表明错误的文本与问题不完全匹配。