1
我們有一個使用NetMessagingBinding監聽Azure服務總線隊列的WCF服務。然而,我們發現有時服務似乎在消息到達時不會被通知,即我們看到隊列已經建立,但是我們的實例沒有一個處理消息。爲什麼我們使用NetMessagingBinding監聽Azure服務總線隊列的服務會停止接收消息?
如果我們重新啓動實例,它們會立即開始從隊列中再次接收消息。
這將打開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>
任何想法?
直到服務停止接收消息需要多長時間? – TheDude 2013-05-01 20:03:43
這取決於它有時候會在幾個小時後有時會持續一天,有時它根本不會發生。 – 2013-05-02 08:42:52
我遇到了同樣的問題 - 最終是否找到解決方案? – AndyMoose 2015-08-24 16:01:51