Compartilhar via


ReceiveErrorHandling Enumeração

Definição

Especifica o tratamento de mensagens suspeitas.

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

Campos

Drop 1

Essa opção descarta a mensagem suspeita. A mensagem nunca é entregue ao aplicativo. Se o TTL da mensagem já tivesse expirado neste ponto, a mensagem poderia aparecer na Fila de Mensagens Mortas do remetente. Caso contrário, a mensagem não aparecerá em lugar nenhum. Esta opção indica que o usuário não se importa realmente se a mensagem for perdida.

Fault 0

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

Move 3

Isso move a mensagem suspeita para uma Fila de Mensagens Suspeitas para processamento posterior por um aplicativo de tratamento de mensagens suspeitas.

Reject 2

Isso instrui o MSMQ a enviar uma confirmação negativa para o gerenciador de fila de envio de que a mensagem não pode ser recebida pelo aplicativo. A mensagem é colocada na Fila de Mensagens Mortas do gerenciador da fila de envio.

Exemplos

O código de configuração a seguir ilustra como definir essa propriedade no arquivo de configuração de 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>

Comentários

Uma mensagem suspeita é uma mensagem que falha em repetidas tentativas de entrega ao aplicativo. Isso é aplicável somente ao usar uma associação baseada em MSMQ (Enfileiramento de Mensagens). O valor padrão é Fault, que falha o ouvinte e, portanto, o ServiceHost. No caso em que o serviço foi culpado por causa de uma mensagem suspeita, um MsmqPoisonMessageException é lançado. A exceção contém o LookupId da mensagem MSMQ que pode ser usada para mover a mensagem para fora do caminho usando a API System.Messaging. Determinados valores da ReceiveErrorHandling enumeração, como Reject e Move , por exemplo, só estão disponíveis no Windows Vista. Você controla o tratamento de mensagens suspeitas definindo a ReceiveErrorHandling propriedade como um dos valores dessa enumeração.

Aplica-se a

Confira também