2016-07-12 7 views
0

私はこの権利を守っているかどうか分かりません。着信メッセージに対するカスタム了承

当社のオーケストレーションは、次のようになります。私たちはおよそ6000のオーダーでこれをテストしたとき

ReceiveOrder 
TryScope (Long Running) 
    AcknowledgementScope (Atomic) 
    ConstructOrderAckMessage 
     TransformOrderToAck (using a map) 
    SendOrderAckToMessageQueue 
    AtomicWebServiceScope 
     ImportOrderToDBExpression 
    Construct and send message to another process 
CatchException 
     ConstructErrorExpression 
     HandleExceptionStartOrchestration 

は、我々は彼らのすべてが確認応答メッセージ(SendOrderAckToMessageQueue)をもたらしたことに気づきました。肯定応答は、オーケストレーションにオーダーを送信するクルーによって提供されるスキーマに基づく単純なXMLです。

ただし、すべてがデータベースにインポートされているわけではありません(約45)。実際には、エラーや失敗、またはあらゆる種類の中断インスタンスはありません。輸入されなかった注文には珍しいことはありません。それが失敗した場合、それは黙って行った。

AcknowledgementScope部分は最近追加されたものです。その前にすべての注文が正常にインポートされました。

これは、このオーケストレーションでスコープが正しく設定されていないためですか?他にどこに問題がありますか?愚かな証明の方法で謝辞を送る良い方法はありますか?アドバイスありがとう。

+0

InportOderToDBExpressionはどのように行われますか?これは送信ポート経由か、コードで何かしていますか? – Dijkgraaf

+0

また、挿入する前にAckメッセージを送信しているようです。また、なぜあなたは原子スコープを使用していますか? – Dijkgraaf

+0

ありがとう@Dijkgraaf importOrderは、BizTalkアプリケーションプロジェクトによって参照される.DLLから呼び出されたSPを使用して行われます。関連する送信ポートはありません。これはすべて、その式のコードを介して行われます。 受信メッセージが受信されるとすぐに肯定応答を送信することでした。 アトミックスコープの具体的な理由はありません。 – FMFF

答えて

1

キャッチブロックは言及していません。すべてのスコープにブロックをキャッチしていますか?

キャッチブロックがない例外、または例外をログに記録しないキャッチブロックが存在する場合は、自動的に失敗するように見えます。

+0

ありがとう@ Johns-305私はすべてのスコープのキャッチブロックを持っていません。オーケストレーションの下部にはキャッチ例外が1つしかありません。 – FMFF

+0

これでエラーをログに記録しない限り、何も表示されません。 –

+0

Thanks @ Johns-305エラーはイベントログに記録され、DBのテーブルにも書き込まれます。私はちょうどそれらの場所のいずれかに記録された失敗を見つけることができませんでした。 – FMFF

1

はい、間違っている主なことは、レコードをデータベースに挿入する外部DLLを呼び出すことです。

同時接続の数を制限することを含めてマルチスレッド可能であり、再試行およびエラー処理機能が良好であることが非常にうまく書かれていない限り、エラーに遭遇して静かに失敗する可能性があります。

イベントログにDLLにエラーが記録されていても、DLLがイベントログに書き込むために使用するアプリケーション名のアクセス許可を与える必要があります。そうしないと、DLLはキャッチブロックイベントログに書き込もうとしています。

あなたがしなければならないことは、送信ポートを適切なアダプタとともに使用してデータベースにレコードを送信することです。

また、アトミックスコープが必要な状況はほとんどありません。アトミックスコープでは、ロールバックを実装するのは開発者次第です。オーケストレーションが長時間かかると思わない限り、おそらく長い実行範囲は必要ありません。応答を待つ間に脱水する必要があります。

BizTalkオーケストレーションがメッセージを受信した後に肯定応答を送信すると、何らかの理由でBizTalkで失敗したメッセージが再開されるため、何らかの再試行メカニズムが必要になる場合があります。

関連する問題