ReceiveErrorHandling Enumeração
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Especifica o tratamento para mensagens envenenadas.
public enum class ReceiveErrorHandling
public enum ReceiveErrorHandling
type ReceiveErrorHandling =
Public Enum ReceiveErrorHandling
- Herança
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.