2017-01-09 2 views
0

У меня есть веб-сайт, который использует расширение sjk Webjob и функцию, которая запускается вручную и читает/записывает служебную шину.ТемаКлиент отправлять висит при использовании azure webjob SDK

При отправке сообщения кажется, что он висит.

здесь соответствующий код:

JobHostConfiguration config = new JobHostConfiguration 
      { 
       StorageConnectionString = decryptedStorageConnectionString, 
       DashboardConnectionString = decryptedDashboardConnectionString, 
      }; 
      config.UseTimers(); 
      var host = new JobHost(config); 

      host.CallAsync(typeof(Program).GetMethod(nameof(myJob))); 

      // The following code ensures that the WebJob will be running continuously 
      host.RunAndBlock(); 

[NoAutomaticTrigger] 
     public void myJob(TextWriter log) 
     { 
... 
this.Client = TopicClient.CreateFromConnectionString(connection, ConstantStrings.IncidentResponseTopicName); 
this.Client.Send(args); 

} 

Я получаю следующее сообщение об ошибке:

The request operation did not complete within the allotted timeout of 00:01:09.7322175. The time allotted to this operation may have been a portion of a longer timeout. For more information on exception types and proper exception handling, please refer to http://go.microsoft.com/fwlink/?LinkId=761101 TrackingId:fdbd3e20-c1b7-4829-8ebd-b9b14962c13f, Timestamp:1/9/2017 10:14:07 AM 

System.TimeoutException: The request operation did not complete within the allotted timeout of 00:01:09.9496489. The time allotted to this operation may have been a portion of a longer timeout. For more information on exception types and proper exception handling, please refer to http://go.microsoft.com/fwlink/?LinkId=761101 TrackingId:570d2e9f-cd9f-4bb5-8d52-45ecf026df3f, Timestamp:1/9/2017 10:15:18 AM 
[01/09/2017 10:15:18 > ff1c90: INFO] 
[01/09/2017 10:15:18 > ff1c90: INFO] Server stack trace: 
[01/09/2017 10:15:18 > ff1c90: INFO] 
[01/09/2017 10:15:18 > ff1c90: INFO] 
[01/09/2017 10:15:18 > ff1c90: INFO] Exception rethrown at [0]: 
[01/09/2017 10:15:18 > ff1c90: INFO] at Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result) 
[01/09/2017 10:15:18 > ff1c90: INFO] at Microsoft.ServiceBus.Messaging.Sbmp.DuplexRequestBindingElement.DuplexRequestSessionChannel.EndRequest(IAsyncResult result) 
[01/09/2017 10:15:18 > ff1c90: INFO] at Microsoft.ServiceBus.Messaging.Channels.ReconnectBindingElement.ReconnectChannelFactory`1.RequestSessionChannel.RequestAsyncResult.<>c.<GetAsyncSteps>b__9_3(RequestAsyncResult thisPtr, IAsyncResult r) 
[01/09/2017 10:15:18 > ff1c90: INFO] at Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.StepCallback(IAsyncResult result) 
[01/09/2017 10:15:18 > ff1c90: INFO] 
[01/09/2017 10:15:18 > ff1c90: INFO] Exception rethrown at [1]: 
[01/09/2017 10:15:18 > ff1c90: INFO] at Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result) 
[01/09/2017 10:15:18 > ff1c90: INFO] at Microsoft.ServiceBus.Messaging.Channels.ReconnectBindingElement.ReconnectChannelFactory`1.RequestSessionChannel.EndRequest(IAsyncResult result) 
[01/09/2017 10:15:18 > ff1c90: INFO] at Microsoft.ServiceBus.Messaging.Sbmp.RedirectBindingElement.RedirectContainerChannelFactory`1.RedirectContainerSessionChannel.RequestAsyncResult.<>c__DisplayClass8_1.<GetAsyncSteps>b__4(RequestAsyncResult thisPtr, IAsyncResult r) 
[01/09/2017 10:15:18 > ff1c90: INFO] at Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.StepCallback(IAsyncResult result) 
[01/09/2017 10:15:18 > ff1c90: INFO] 
[01/09/2017 10:15:18 > ff1c90: INFO] Exception rethrown at [2]: 
[01/09/2017 10:15:18 > ff1c90: INFO] at Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result) 
[01/09/2017 10:15:18 > ff1c90: INFO] at Microsoft.ServiceBus.Messaging.Sbmp.RedirectBindingElement.RedirectContainerChannelFactory`1.RedirectContainerSessionChannel.EndRequest(IAsyncResult result) 
[01/09/2017 10:15:18 > ff1c90: INFO] at Microsoft.ServiceBus.Messaging.Channels.ReconnectBindingElement.ReconnectChannelFactory`1.RequestSessionChannel.RequestAsyncResult.<>c.<GetAsyncSteps>b__9_3(RequestAsyncResult thisPtr, IAsyncResult r) 
[01/09/2017 10:15:18 > ff1c90: INFO] at Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.StepCallback(IAsyncResult result) 
[01/09/2017 10:15:18 > ff1c90: INFO] 
[01/09/2017 10:15:18 > ff1c90: INFO] Exception rethrown at [3]: 
[01/09/2017 10:15:18 > ff1c90: INFO] at Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result) 
[01/09/2017 10:15:18 > ff1c90: INFO] at Microsoft.ServiceBus.Messaging.Channels.ReconnectBindingElement.ReconnectChannelFactory`1.RequestSessionChannel.EndRequest(IAsyncResult result) 
[01/09/2017 10:15:18 > ff1c90: INFO] at Microsoft.ServiceBus.Messaging.Sbmp.SbmpTransactionalAsyncResult`1.<>c.<GetAsyncSteps>b__18_3(TIteratorAsyncResult thisPtr, IAsyncResult a) 
[01/09/2017 10:15:18 > ff1c90: INFO] at Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.StepCallback(IAsyncResult result) 
[01/09/2017 10:15:18 > ff1c90: INFO] 
[01/09/2017 10:15:18 > ff1c90: INFO] Exception rethrown at [4]: 
[01/09/2017 10:15:18 > ff1c90: INFO] at Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result) 
[01/09/2017 10:15:18 > ff1c90: INFO] at Microsoft.ServiceBus.Messaging.Sbmp.SbmpMessageReceiver.EndUpdateCommand(IAsyncResult result) 
[01/09/2017 10:15:18 > ff1c90: INFO] at Microsoft.ServiceBus.Messaging.Sbmp.SbmpMessageReceiver.OnEndComplete(IAsyncResult result) 
[01/09/2017 10:15:18 > ff1c90: INFO] at Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.StepCallback(IAsyncResult result) 
[01/09/2017 10:15:18 > ff1c90: INFO] 
[01/09/2017 10:15:18 > ff1c90: INFO] Exception rethrown at [5]: 
[01/09/2017 10:15:18 > ff1c90: INFO] at Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result) 
[01/09/2017 10:15:18 > ff1c90: INFO] at Microsoft.ServiceBus.Messaging.MessageReceiver.OnComplete(TrackingContext trackingContext, IEnumerable`1 lockTokens, TimeSpan timeout) 
[01/09/2017 10:15:18 > ff1c90: INFO] at Microsoft.ServiceBus.Messaging.MessageReceiver.Complete(TrackingContext trackingContext, IEnumerable`1 lockTokens, TimeSpan timeout) 
[01/09/2017 10:15:18 > ff1c90: INFO] at Microsoft.ServiceBus.Messaging.ReceiveContext.Complete() 
[01/09/2017 10:15:18 > ff1c90: INFO] at MyJob.myJob.<ExecuteJob>b__4_0(BrokeredMessage request) 

Все работало хорошо, когда я использовал регулярную Azure webjob. Когда я переместил код в Azure Webjob SDK, это повешение началось. Другое интересное, что при запуске этого на моей локальной машине все работает хорошо, это происходит только при развертывании кода для Azure Webjobs

Любая идея ???

+0

Почему вы используете 'host.CallAsync'? в вашем примере метод не асинхронный. также вы уверены в строке подключения? – Thomas

+0

Да, evertying хорошо работает, когда я запускаю его локально. –

+0

Можете ли вы попробовать использовать 'host.Call'? – Thomas

ответ

0

Согласно вашему коду, я предположил, что вы используете Azure WebJobs SDK Extensions > TimerTrigger для планирования других заданий и вручную активируете функцию myJob для чтения/записи сообщений с/на вашу служебную шину при запуске JobHost.

System.TimeoutException: The request operation did not complete within the allotted timeout of 00:01:09.9496489. The time allotted to this operation may have been a portion of a longer timeout.

Как уже упоминалось в официальной document о Service Bus сообщений TimeoutException:

A TimeoutException indicates that a user-initiated operation is taking longer than the operation timeout. You should check the value of the ServicePointManager.DefaultConnectionLimit property, as hitting this limit can also cause a TimeoutException.

The server did not respond to the requested operation within the specified time which is controlled by OperationTimeout .

Я предположил, что вы могли бы попытаться увеличить OperationTimeout и добавить повторов логику следующим образом построить ваш TopicClient:

var builder = new ServiceBusConnectionStringBuilder("{ServicesBusConnectionString}") 
{ 
    OperationTimeout = TimeSpan.FromMinutes(10) 
}; 
var messagingFactory = MessagingFactory.CreateFromConnectionString(builder.ToString()); 
TopicClient topicClient = messagingFactory.CreateTopicClient("{TopicName}"); 
topicClient.RetryPolicy = new RetryExponential(
      TimeSpan.Zero, 
      TimeSpan.FromMinutes(5), 
      2); 
topicClient.Send("{BrokeredMessage}"); 
+0

Спасибо, Брюс, но это не помогает. Также тот же код отлично работает локально, и только неудачи при развертывании на лазури Еще одна интересная вещь: когда я вызываю функцию без использования лазурных расширений SDK, все работает хорошо, даже когда они развернуты. Так что это похоже на ошибку в лазурном webjob –

Смежные вопросы