私は、リクエストを受け取り、リクエスト内のデータを使用してサードパーティのWebサービスを呼び出し、応答を処理してから元のリクエスターに応答を送信し、さらに別のサービスにPUTリクエストを発行するRailsアプリを設計しています。
標準的なRails構造とは異なるため、このRailsアプリの設計方法に頭を悩ませようとしています。
オブジェクトはリストとタスクです。各リストには多くのタスクがあり、各タスクはリストに属しています。
私が受け取るリクエストは次のようなものです。
http://myrailsapp.heroku.com/v1/lists?id=1&from=2012-02-12&to=2012-02-14&priority=high
この例では、リスト#1で優先度の高い2012年2月12日から2012年2月14日までのタスクをリクエストしています。
次に、次のようなサードパーティのWebサービス呼び出しを発行します。
http://thirdpartywebservice.com/v1/lists?id=4128&from=2012-02-12&to=2012-02-14&priority=high ご覧のとおり、データに対していくつかの処理が行われました(この場合はidが変更されました)
結果は、PUTを介してリクエスターと別のWebサービスに返送されます。
私の質問は、これらのタイプの動作を処理するようにRailsアプリを設定するにはどうすればよいですか?コントローラの構造はどのように変化しますか?これはキューの良いユースケースのように見えますが、キュー間で複数の同時リクエストを分散するにはどうすればよいですか?
1つには、データの永続性が不要であり(応答の送信後にデータを破棄できます)、データ構造の設計も簡素化されます。(私はルビーオブジェクトを必要としないと思います。これらを表す単なる辞書またはハッシュは、より軽量でより迅速に実装できます)
編集
そこで、アプリのワークフローをこれらのコンポーネントに分解しました
- 着信リクエストを解析する
- 第3部のWebサービスリクエストを作成する
- サードパーティのリクエストを送信する
- 期待される応答を処理するためにワーカーをキューに入れます
- 応答が到着したら処理します
- 解析された結果を応答として送り返します
これらの各ステップを処理する標準のルビーコントローラーはどれですか?リストとタスク以外に必要なモデルは何ですか?