ReceiveErrorHandling Enumeração
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Especifica o tratamento de mensagens suspeitas.
public enum class ReceiveErrorHandling
public enum ReceiveErrorHandling
type ReceiveErrorHandling =
Public Enum ReceiveErrorHandling
- Herança
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.