服务总线队列主机服务的异常处理

服务总线队列主机服务的异常处理

问题描述:

我有一个连接到服务总线的WCF服务队列准备好接收消息。这很好,但我希望能够将消息标记为DeadLetter,如果我有处理消息的问题。目前如果我的代码抛出异常,消息仍然从队列中移除,但我希望能够在配置中指定不从队列中删除,但将其标记为DeadLetter。我做了一些搜索,我无法弄清楚如何做到这一点。我目前正在运行的服务作为Windows服务服务总线队列主机服务的异常处理

乌里baseAddress = ServiceBusEnvironment.CreateServiceUri( “SB”, “命名空间”, “servicequeue”); _serviceHost = new ServiceHost(typeof(PaperlessImportServiceOneWay),baseAddress); _serviceHost.Open();

配置:

<services> 
     <service name="Enrollment.ServiceOneWay"> 
     <endpoint name="ServiceOneWay" 
        address="sb://namespace.servicebus.windows.net/servicequeue" 
        binding="netMessagingBinding" 
        bindingConfiguration="messagingBinding" 
        contract="IServiceOneWaySoap" 
        behaviorConfiguration="sbTokenProvider" /> 
     </service> 
</services> 
     <netMessagingBinding> 
     <binding name="messagingBinding" closeTimeout="00:03:00" openTimeout="00:03:00" 
       receiveTimeout="00:03:00" sendTimeout="00:03:00" sessionIdleTimeout="00:01:00" 
       prefetchCount="-1"> 
      <transportSettings batchFlushInterval="00:00:01" /> 
     </binding> 
     </netMessagingBinding> 

<behavior name="sbTokenProvider"> 
      <transportClientEndpointBehavior> 
      <tokenProvider> 
       <sharedSecret issuerName="owner" issuerSecret="XXXXXXXXXXXXXXXXXXXXXXXX" /> 
      </tokenProvider> 
      </transportClientEndpointBehavior> 
     </behavior> 

在你的界面为opertion合同添加此 [ReceiveContextEnabled(ManualControl =真)] 那么你可以设法提交或放弃在这个环节发现的消息 : http://msdn.microsoft.com/en-us/library/windowsazure/hh532034.aspx