Sdílet prostřednictvím


ReceiveErrorHandling Výčet

Definice

Určuje zpracování poškozených zpráv.

public enum class ReceiveErrorHandling
public enum ReceiveErrorHandling
type ReceiveErrorHandling = 
Public Enum ReceiveErrorHandling
Dědičnost
ReceiveErrorHandling

Pole

Drop 1

Tato možnost zahodí zprávu o jedu. Zpráva se nikdy nedoručí do aplikace. Pokud hodnota TTL zprávy už v tomto okamžiku vypršela, může se zpráva zobrazit ve frontě nedoručených zpráv odesílatele. Pokud ne, zpráva se nikde nezobrazí. Tato možnost indikuje, že uživateli je ve skutečnosti jedno, jestli je zpráva ztracena.

Fault 0

Tato možnost odešle chybu do naslouchacího procesu, která způsobila chybu ServiceHost. Aby aplikace mohl pokračovat ve zpracování zpráv z fronty, musí být zpráva odebrána z fronty aplikace nějakým externím mechanismem.

Move 3

Tím přesunete otrávenou zprávu do fronty poškozených zpráv pro pozdější zpracování pomocí aplikace pro zpracování poškozených zpráv.

Reject 2

To dává službě MSMQ pokyn, aby odeslala záporné potvrzení zpět do správce fronty odesílání, že aplikace nemůže zprávu přijímat. Zpráva se umístí do fronty nedoručených zpráv správce odesílající fronty.

Příklady

Následující konfigurační kód ukazuje, jak nastavit tuto vlastnost v konfiguračním souboru služby:

<configuration>
  <appSettings>
    <!-- use appSetting to configure MSMQ queue name -->
    <add key="queueName" value=".\private$\ServiceModelSamplesPoison" />
    <add key="baseAddress" value="http://localhost:8000/orderProcessor/poisonSample"/>
  </appSettings>
  <system.serviceModel>
    <services>
      <service 
              name="Microsoft.ServiceModel.Samples.OrderProcessorService">
        <!-- Define NetMsmqEndpoint -->
        <endpoint address="net.msmq://localhost/private/ServiceModelSamplesPoison"
                  binding="netMsmqBinding"
                  bindingConfiguration="PoisonBinding" 
                  contract="Microsoft.ServiceModel.Samples.IOrderProcessor" />
      </service>
    </services>

    <bindings>
      <netMsmqBinding>
        <binding name="PoisonBinding" 
                 receiveRetryCount="0"
                 maxRetryCycles="1"
                 retryCycleDelay="00:00:05" 					 
                 receiveErrorHandling="Fault"
                        />
      </netMsmqBinding>
    </bindings>
  </system.serviceModel>
</configuration>

Poznámky

Jedovatá zpráva je zpráva, která selže při opakovaných pokusech o doručení do aplikace. To platí pouze při použití vazby založené na službě Řízení front zpráv (MSMQ). Výchozí hodnota je Fault, což způsobuje chybu naslouchacího procesu a tedy servicehost. V případě, že služba měla chybu kvůli jedovaté zprávě, MsmqPoisonMessageException je vyvolán . Výjimka obsahuje LookupId zprávu MSMQ, kterou lze použít k přesunutí zprávy z cesty pomocí rozhraní SYSTEM.Messaging API. Určité hodnoty výčtu ReceiveErrorHandling , například Reject a Move jsou k dispozici pouze v systému Windows Vista. Zpracování zpráv s poškozenými je možné řídit nastavením ReceiveErrorHandling vlastnosti na jednu z hodnot tohoto výčtu.

Platí pro

Viz také