2013-05-01 2 views
1

У нас есть служба WCF, которая слушает очередь Azure servicebus с помощью NetMessagingBinding. Однако мы обнаруживаем, что иногда служба перестает быть уведомленной при поступлении сообщений, то есть мы видим, что очередь создается, но ни один из наших экземпляров обрабатывает сообщения.Почему наша служба, которая слушает очередь служебных шин Azure с помощью NetMessagingBinding, перестает получать сообщения?

Если мы перезагружаем экземпляры, они сразу же начинают получать сообщения из очереди снова.

код, который открывает службу WCF в нашем рабочем роли:

var endpoint = new ServiceEndpoint(ContractDescription.GetContract(typeof(ICacheKeyExchangeWithSession))) 
{ 
    Address = new EndpointAddress(new Uri(baseAddress + QueueNames.Cache)), 
    Binding = new NetMessagingBinding(), 
}; 

var endpointBehavior = new TransportClientEndpointBehavior 
{ 
    TokenProvider = TokenProvider.CreateSharedSecretTokenProvider(id, secret), 
}; 

endpoint.EndpointBehaviors.Add(endpointBehavior); 
host = new ServiceHost(typeof(DataService), new Uri[] { }); 
host.AddServiceEndpoint(endpoint); 
host.Open(); 

и у нас нет никакой конкретной конфигурации в app.config для NetMessagingBinding:

<system.serviceModel> 
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> 
<extensions> 
    <behaviorExtensions> 
    <add name="transportClientEndpointBehavior" type="Microsoft.ServiceBus.Configuration.TransportClientEndpointBehaviorElement, Microsoft.ServiceBus, Version=1.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
    </behaviorExtensions> 
    <bindingElementExtensions> 
    <add name="netMessagingTransport" type="Microsoft.ServiceBus.Messaging.Configuration.NetMessagingTransportExtensionElement, Microsoft.ServiceBus, Version=1.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
    </bindingElementExtensions> 
    <bindingExtensions> 
    <add name="netMessagingBinding" type="Microsoft.ServiceBus.Messaging.Configuration.NetMessagingBindingCollectionElement, Microsoft.ServiceBus, Version=1.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
    </bindingExtensions> 
</extensions> 
</system.serviceModel> 

Любые идеи?

+0

Сколько времени потребуется, пока служба перестанет получать сообщения? – TheDude

+0

Это зависит от того, что иногда это происходит в течение дня, иногда через несколько часов, иногда это не происходит вообще. –

+0

У меня такая же проблема - вы нашли решение в конце? – AndyMoose

ответ

0

Из того, что вы описали, похоже, что вы можете быть жертвой вашей конфигурации IIS: вам нужно убедиться, что iis не настроен на автоматическую переработку пула приложений, запускающего ваше приложение. Если у вас также нет инициализации приложения, настроенной в iis, ваша служба не перезапустится автоматически и не возобновит обработку сообщений.

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