Freigeben über


Sendeadaptervorgänge

Sendeadapter können die folgenden Vorgänge durchführen:

  • Erneut übermitteln: void Resubmit(IBaseMessage msg, DateTime timeStamp). Wenn es bei einer Nachricht zu einem Übertragungsfehler kommt, überträgt der Adapter diese zu einem passenden Zeitpunkt erneut. Die Übertragung erfolgt hierbei für individuelle Nachrichten. Wenn ein Batch von Nachrichten nicht erfolgreich gesendet wurde, muss der Adapter die Nachrichten ermitteln, die den Fehler verursachen, und die Nachrichten erneut übermitteln, die nicht dazu führte, dass der Batch in separaten Aufrufen der erneuten Übermittlung fehlschlägt. Am Ende dieses Themas finden Sie Informationen dazu, wie Sie die Werte der Nachrichtenkontexteigenschaft beibehalten, wenn Sie Erneut übermitteln aufrufen.

  • Wechseln Sie zum nächsten Transport: void MoveToNextTransport(IBaseMessage msg). Wenn bei einer Nachricht während eines Sendevorgangs ein Fehler auftritt und die Anzahl der definierten Wiederholungsversuche erreicht wurde, kann der Adapter die Nachricht für die erneute Übertragung an den nächsten konfigurierten Transport senden.

  • Suspend: void MoveToSuspendQ(IBaseMessage msg). Der Adapter verschiebt eine fehlerhafte Sendenachricht in die Warteschlange Angehalten, wenn kein weiterer sekundärer Transport konfiguriert wurde. Am Ende dieses Themas finden Sie Informationen dazu, wie Sie die Werte der Nachrichtenkontexteigenschaft beibehalten, wenn Sie Suspend aufrufen.

  • Delete: void DeleteMessage(IBaseMessage msg). Der Adapter löscht eine Nachricht, sobald er von BizTalk Server über deren erfolgreiche Übertragung benachrichtigt wurde. Durch das Löschen einer Nachricht wird BizTalk Server mitgeteilt, dass der Adapter die Verarbeitung der Nachricht abgeschlossen hat. Im Allgemeinen erfolgt der SubmitResponse-Vorgang im selben Batch wie der zugehörige Delete-Vorgang .

  • Antwort senden: void SubmitResponseMessage(IBaseMessage solicitMsgSent, IBaseMessage responseMsgToSubmit). Der Adapter sendet eine Antwort an den Batch, die an BizTalk Server zurückgesendet werden soll. Dieser Vorgang umfasst die im Aufruf enthaltene Originalnachricht sowie die Antwort, damit diese von BizTalk Server korreliert werden können.

  • Cancel Response: void CancelResponseMessages(string correlationToken). Wenn das Senden einer Antwortnachricht abgebrochen werden muss, bevor der Batch gesendet wird, wird die CancelResponseMessages-Methode verwendet, wobei das Korrelationstoken für die zugeordnete Antwortnachricht übergeben wird, die gelöscht wird.

    Wenn Sie für eine Nachricht erneut übermitteln oder anhalten aufrufen, sollten Sie die Werte bestimmter Nachrichtenkontexteigenschaften beibehalten. Dies ist möglich, wenn Sie Eigenschaftswerte im XML-Format speichern. Beim erneuten Übertragen bzw. beim Anhalten der Nachricht bleiben die entsprechenden Eigenschaften im Nachrichtenkontext erhalten.

    Die folgende XML-Zeichenfolge beschreibt das Format, in dem die Informationen gespeichert werden:

<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>  

Diese XML-Zeichenfolge wird von dem folgenden Code erzeugt:

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;  
}  

Diese Zeichenfolge wird dann mit dem folgenden Code im Nachrichtenkontext gespeichert:

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

Beim erneuten Übertragen der Nachricht kann der Adapter diese Eigenschaft mithilfe der folgenden Codezeile lesen:

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