ReceiveErrorHandling Enumeración
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Especifica el control de los mensajes dudosos.
public enum class ReceiveErrorHandling
public enum ReceiveErrorHandling
type ReceiveErrorHandling =
Public Enum ReceiveErrorHandling
- Herencia
Campos
Drop | 1 | Esta opción coloca el mensaje dudoso. El mensaje nunca se entrega a la aplicación. Si el TLL del mensaje ya ha expirado en este punto, el mensaje puede aparecer en la cola de mensajes no entregados del remitente. Si no, el mensaje no aparece en ningún sitio. Esta opción indica que al usuario realmente no le importa si se pierde el mensaje. |
Fault | 0 | Esta opción envía un error al agente de escucha que provocó el error en ServiceHost. El mensaje debe ser eliminado de la cola de la aplicación por algún mecanismo externo antes de que la aplicación pueda continuar procesando los mensajes de la cola. |
Move | 3 | Mueve el mensaje dudoso a una cola de mensajes dudosos para ser procesado posteriormente por una aplicación de control de mensajes dudosos. |
Reject | 2 | Indica a (MSMQ) que devuelva una confirmación de que no se pudo realizar la acción al administrador de la cola emisora según la cual la aplicación no puede recibir el mensaje. El mensaje se coloca en la cola de mensajes no enviados del administrador de la cola emisora. |
Ejemplos
El código de configuración siguiente muestra cómo establecer esta propiedad en el archivo de configuración de servicio:
<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>
Comentarios
Un mensaje dudoso es un mensaje que produce un error en los intentos repetidos de entregar a la aplicación. Esto sólo es aplicable al utilizar un enlace basado en Message Queuing (MSMQ). El valor predeterminado es Fault
, que da error en el agente de escucha y, por consiguiente, en ServiceHost. En el caso en que el servicio da error debido a un mensaje dudoso, se inicia MsmqPoisonMessageException. La excepción contiene LookupId
del mensaje de MSMQ que se puede utilizar para eliminar el mensaje utilizando System.Messaging API. Algunos valores de la ReceiveErrorHandling enumeración como Reject
y Move
solo están disponibles en Windows Vista. Puede controlar la administración de mensajes dudosos estableciendo la propiedad ReceiveErrorHandling en uno de los valores de esta enumeración.