ReceiveErrorHandling Enumeração

Definição

Especifica o tratamento para mensagens envenenadas.

public enum class ReceiveErrorHandling
public enum ReceiveErrorHandling
type ReceiveErrorHandling = 
Public Enum ReceiveErrorHandling
Herança
ReceiveErrorHandling

Campos

Name Valor Description
Fault 0

Esta opção envia uma falha ao ouvinte que causou a falha do ServiceHost. A mensagem deve ser removida da fila do aplicativo por algum mecanismo externo antes que o aplicativo possa continuar a processar mensagens da fila.

Drop 1

Esta opção elimina a mensagem do veneno. A mensagem nunca chega à aplicação. Se o TTL da mensagem já tivesse expirado neste ponto, então a mensagem pode aparecer na Fila de Cartas Mortas do remetente. Caso contrário, a mensagem não aparece em nenhum lugar. Esta opção indica que o utilizador não se importa realmente se a mensagem se perder.

Reject 2

Isto instrui a MSMQ a enviar um reconhecimento negativo de volta ao gestor da fila de envio de que a mensagem não pode ser recebida pela aplicação. A mensagem é colocada na Fila de Cartas Mortas do gestor de filas de envio.

Move 3

Isto move a mensagem venenosa para uma Fila de Mensagens Venenosas para processamento posterior por uma aplicação de tratamento de mensagens venenosas.

Exemplos

O seguinte código de configuração ilustra como definir esta propriedade no ficheiro de configuração do serviço:

<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>

Observações

Uma mensagem venenosa é uma mensagem que falha em tentativas repetidas de entrega à aplicação. Isto é aplicável apenas quando se utiliza uma ligação baseada em Fila de Mensagens (MSMQ). O valor padrão é Fault, o que falha no ouvinte e, portanto, no ServiceHost. No caso em que o serviço tenha falhado devido a uma mensagem de envenenamento, é lançado a.MsmqPoisonMessageException A exceção contém a LookupId mensagem MSMQ que pode ser usada para mover a mensagem para fora do caminho usando a API System.Messenger. Certos valores da enumeração ReceiveErrorHandling, como Reject e Move, só estão disponíveis em Windows Vista. Controla o tratamento das mensagens venenosas definindo a ReceiveErrorHandling propriedade para um dos valores desta enumeração.

Aplica-se a

Ver também