locked
MSMQ subcriber service Polling is not in order in retry scenario.. why?How to get single threaded polling RRS feed

  • Question

  • I am having WCF subscriber which is attached to MSMQ queue and listens to queue. My retry configuration is below...so that if message gets failed then it will retry the same transaction.
    <msmqIntegrationBinding>
        <binding name="OrderProcessorBinding" maxRetryCycles="0" receiveErrorHandling="Move"
          receiveRetryCount="2" retryCycleDelay="00:00:30">
          <security mode="None" />
        </binding>
      </msmqIntegrationBinding>

    Now Problem is Its picking transaction1 processing it and it failed after this its picking   transaction2 then again retry for transaction1 and transaction2.... again retry for transaction 1 and then transaction2...

    I want the behavior First it should complete all the retry attempt for  transaction1 then start the 2nd transaction....What i need to do or change....??? please suggest me...I am unable to catchup..please help me..

    My app.config is below:--

    <service name="Microsoft.Samples.MSMQToWCF.OrderProcessorService"  behaviorConfiguration="svcThrottled">
    
        <endpoint address="msmq.formatname:DIRECT=OS:inblr-shuklasd.eu.uis.unisys.com\private$\globalrass_sbux"
                  binding="msmqIntegrationBinding"
                  bindingConfiguration="OrderProcessorBinding"
                  behaviorConfiguration="epb"
                  contract="Microsoft.Samples.MSMQToWCF.IOrderProcessor">
        </endpoint>
    
      </service>       
    
    </services>
    
    <behaviors>
      <endpointBehaviors>
        <behavior name="epb">
          <synchronousReceive/>
        </behavior>
    
        <behavior name="CustomSOAPBehavior">
          <soapProcessing processMessages="true" />
        </behavior>
      </endpointBehaviors>
    
      <serviceBehaviors>
        <behavior name="svcThrottled">
          <serviceThrottling
            maxConcurrentCalls="1"
            maxConcurrentSessions="1"
            maxConcurrentInstances="1"
          />
          <!-- TODO : turn this to false to NOT send detailed exception trace -->
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    
    <bindings>
      <basicHttpBinding>
        <binding name="WebServiceSoap">
          <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Basic" />
          </security>
        </binding>
        <binding name="BasicHttpBinding_IService1">
          <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Basic" />
          </security>
        </binding>
        <binding name="BasicHttpBinding_IService11" />
        <binding name="MSMQreciever_messageReciever_Binder1">
          <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Basic" />
          </security>
        </binding>
        <binding name="MSMQreciever_messageReciever_Binder" />
      </basicHttpBinding>
      <customBinding>
        <binding name="WebServiceSoap12">
          <textMessageEncoding messageVersion="Soap12" />
          <httpTransport />
        </binding>
      </customBinding>
      <msmqIntegrationBinding>
        <binding name="OrderProcessorBinding" maxRetryCycles="0" receiveErrorHandling="Move"
          receiveRetryCount="2" retryCycleDelay="00:00:30">
          <security mode="None" />
        </binding>
      </msmqIntegrationBinding>
      <netMsmqBinding>
        <binding name="NetMsmqBindingTransactionalNoSecurity">
          <security mode="None" />
        </binding>
        <binding name="NetMsmqBindingNonTransactionalNoSecurity" exactlyOnce="false">
          <security mode="None" />
        </binding>
        <binding name="NetMsmqBindingNonTransactionalTransportSecurity"
          exactlyOnce="false">
          <security mode="Transport" />
        </binding>
        <binding name="NetMsmqBindingTransactionalTransportSecurity"
          exactlyOnce="true" receiveErrorHandling="Move">
          <security mode="Transport" />
        </binding>
      </netMsmqBinding>
    </bindings>


    Thursday, March 7, 2013 12:54 PM