送信アダプターの操作
送信アダプターでは次の操作を実行できます。
再送信: void Resubmit(IBaseMessage msg, DateTime timeStamp). メッセージで送信エラーが発生した後、アダプターは必要に応じて再送信します。 呼び出しはメッセージ単位です。 メッセージのバッチが正常に送信されなかった場合、アダプターはエラーの原因となっているメッセージを特定し、バッチが失敗しないメッセージを 再送信する必要があります。 このトピックの最後には、 Resubmit を呼び出すときにメッセージ コンテキスト プロパティの値を保持する方法に関する情報があります。
次のトランスポートに移動: void MoveToNextTransport(IBaseMessage msg)。 送信操作中にメッセージが失敗し、再試行が使い果たされた場合、アダプターは、再送信のために構成された次のトランスポートにメッセージを送信できます。
Suspend: void MoveToSuspendQ(IBaseMessage msg)。 他にバックアップ トランスポートが構成されていない場合、アダプターでは、失敗した送信メッセージを保留キューに移動します。 このトピックの最後には、Suspend を呼び出すときにメッセージ コンテキスト プロパティの値を保持する方法に関する情報 があります。
Delete: void DeleteMessage(IBaseMessage msg)。 アダプターは、正常な転送のBizTalk Serverによって通知された後、メッセージを削除します。 メッセージを削除すると、アダプターでメッセージの処理が完了したことが BizTalk Server に通知されます。 通常、 SubmitResponse 操作は、関連付けられている Delete 操作と同じバッチで実行 されます 。
Submit Response: void SubmitResponseMessage(IBaseMessage solicitMsgSent, IBaseMessage responseMsgToSubmit). アダプターは、BizTalk Serverに送り返されるバッチに応答を送信します。 この操作には呼び出し内の元のメッセージと応答が含まれるので、BizTalk Server ではこれらを関連付けることができます。
Cancel Response: void CancelResponseMessages(string correlationToken)。 バッチが送信される前に応答メッセージの送信を取り消す必要がある場合は、 CancelResponseMessages メソッドが使用され、関連付けられている応答メッセージを削除するための関連付けトークンが渡されます。
メッセージに対して Resubmit または Suspend を呼び出すときは、特定のメッセージ コンテキスト プロパティの値を保持する必要がある場合があります。 これには、XML 形式でプロパティ値を保存します。 メッセージの再送信時や中断時には、メッセージ コンテキスト内の該当プロパティを使用できます。
次の XML 文字列は、情報を格納する形式を表しています。
<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>
この 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;
}
この文字列をメッセージ コンテキストに保存するには、次のコードを使用します。
Message.Context.Write("PropertiesToUpdate", "http://schemas.microsoft.com/BizTalk/2003/system-properties", GetPropsToUpdateXml(++retryAttempt));
メッセージの再送信時、アダプターでは次のコード行を使用して、このプロパティを読み取ることができます。
propValue = inmsg.Context.Read("RetryAttempts", "http://schemas.microsoft.com/BizTalk/2005/test-properties");