Compartir a través de


Operaciones de adaptador de envío

Los adaptadores de envío pueden realizar las siguientes operaciones:

  • Resubmit: método void Resubmit(IBaseMessage msg, DateTime timeStamp). Después de que se produzca un error de transmisión en un mensaje, un adaptador lo vuelve a enviar cuando corresponda. Esto se llama para cada mensaje. Si un lote de mensajes se envió sin éxito, el adaptador debe determinar los mensajes que provocan el error y volver a enviar los que no hicieron que el lote produzca un error en llamadas independientes a Resubmit. Hay información al final de este tema sobre cómo conservar los valores de propiedad de contexto de mensaje al llamar a Resubmit.

  • Vaya al transporte siguiente: void MoveToNextTransport(msg de IBaseMessage). Si se produce un error en un mensaje durante una operación de envío y se han agotado sus reintentos, el adaptador puede enviar el mensaje al siguiente transporte configurado para la retransmisión.

  • Suspend: void MoveToSuspendQ(IBaseMessage msg). El adaptador mueve un mensaje de envío con error a la cola suspendida si no se configura ningún transporte de copia de seguridad adicional. Hay información al final de este tema sobre cómo conservar los valores de propiedad de contexto del mensaje al llamar a Suspend.

  • Delete: void DeleteMessage(IBaseMessage msg). El adaptador elimina un mensaje después de ser notificado por BizTalk Server de que su transmisión fue exitosa. Al eliminar un mensaje se indica a BizTalk Server que el adaptador ha terminado con el mensaje. Por lo general, la operación SubmitResponse se realiza en el mismo lote que su operación de eliminación asociada.

  • Enviar respuesta: void SubmitResponseMessage(IBaseMessage solicitMsgSent, respuesta IBaseMessageMsgToSubmit). El adaptador envía una respuesta al lote para ser devuelta a BizTalk Server. Esta operación incluye el mensaje original en la llamada junto con la respuesta para que BizTalk Server pueda correlacionarlos.

  • Respuesta de cancelación: void CancelResponseMessages(string correlationToken). Si es necesario cancelar el envío de un mensaje de respuesta antes de enviar el lote, se usa el método CancelResponseMessages y se pasa el token de correlación para que se elimine el mensaje de respuesta asociado.

    Al llamar a Resubmit o Suspender en un mensaje, es posible que desee conservar los valores de determinadas propiedades de contexto de mensaje. Para ello, guarde los valores de propiedad en formato XML. Cuando el mensaje se vuelve a enviar o suspende las propiedades correspondientes permanecen disponibles en el contexto del mensaje.

    En la cadena XML siguiente se describe el formato en el que se almacena la información:

<PropertiesToUpdate>  
<Property name="StringProperty" nameSpace="http://MyNamespace1" vt="8">SomeString</Property>  
<Property name="IntProperty" nameSpace="http://schemas.microsoft.com/BizTalk/2005/test-properties" vt="3">4</Property>  
<Property name="BoolProperty" nameSpace="http://schemas.microsoft.com/BizTalk/2005/test-properties" vt="11">0</Property>  
</PropertiesToUpdate>  

Este código genera esta cadena XML:

private string GetPropsToUpdateXml(int nextRetryAttempt)  
{  
string result = "<PropertiesToUpdate><Property name=\"RetryAttempts\" nameSpace=\"http://schemas.microsoft.com/BizTalk/2005/test-properties\" vt=\"3\">" + nextRetryAttempt.ToString() + "</Property></PropertiesToUpdate>";  
return result;  
}  

A continuación, esta cadena se guarda en el contexto del mensaje mediante este código:

Message.Context.Write("PropertiesToUpdate", "http://schemas.microsoft.com/BizTalk/2003/system-properties", GetPropsToUpdateXml(++retryAttempt));  

Cuando se vuelve a enviar el mensaje, el adaptador puede leer esta propiedad mediante la siguiente línea de código:

propValue = inmsg.Context.Read("RetryAttempts", "http://schemas.microsoft.com/BizTalk/2005/test-properties");