2011-09-09 3 views
0

私は、Agatha-RRSLに基づくRequest-Responseインターフェイスを使用して、短く長い操作を処理する実行システムを持っています。長い操作のためのhttpインターフェイス

私はJson形式でウェブサイト経由でリクエストを送信できるように少し変更したいので、私はJsonをサポートする多くのRESTサーバー実装を試しています。 RESTサーバーはTopshelfで処理される1つのモジュールまたは "shelve"になり、別のモジュールは処理モジュールと最後のNoSQLデータベースランナーモジュールになります。

私はservicebusを考えているRESTと処理モジュールとの間で話をすることが、我々は、要求の2種類があります:1〜2秒で作業を行い、短い要求と1分で働くん長いリクエストを...

servicebusはこの作業に最適ですか?私は、動作状態と結果を新しい要求で要求するために使用できるトークンを使って、長時間実行されているオペレーションの "応答"を返すことを考えています。問題は、HTTP応答を完了するために、要求の大部分が同期要求のように使用されなければならないということです。

私は、オブジェクト

どれヒントの膨大なリストを返すために持っているとき、私は(MSMQメッセージ・トランスポート上の)応答サイズでも問題を抱えていると思いますか?

+0

HTTP 202の場合のように聞こえます。 –

答えて

1

NServiceBusは、要求/応答メッセージングパターンに実際には適していません。これは、非同期パブリッシュ/サブスクライブに適しています。

編集:リクエスト・レスポンスの種類を実装するためには、あなたが両方向のメッセージに必要になりますが、3つの論理ステップからなる:

  1. は、だからあなたのクライアントがデータを要求するメッセージを送信します。
  2. サーバーはメッセージを受信して​​処理し、データとともに返信メッセージを作成してクライアントに送信します。
  3. クライアントは、データを処理できます。

これらの各ステップは、独立して非同期で実行されるため、クライアントが要求を送信して応答を受信するときに意味のあるSLAまたはタイムアウトが強制されることはありません。しかし、これは大規模な処理作業にはうまく機能しますが、完了するまでに数分かかることがあります。

また、応答に要求を結びつけるために使用できる共通の値は、両方のメッセージに存在する必要があります。それ以外の場合、クライアントは複数のリクエストを送信し、複数のレスポンスを受信し、どのレスポンスがどのリクエストに対応しているかを知ることができません。

NServiceBusでこれを行うことができますが、少し考えてみましょう。

また、NServiceBusはhttpでなく、MSMQを基本トランスポートとして使用します。

+0

あなたのヒントは何ですか?長い時間が経過した後、おそらく膨大な量のデータを返す処理モジュール(おそらく1〜2MB)とどう対話できますか? 2つのモジュールは同じサーバーに存在することもできません。 –

+0

上記の私の答えを拡大しました。 –

+0

MSMQの最大メッセージサイズは4MBです。これは2MBのUnicode文字です。 –

関連する問題