2016-11-10 4 views
1

アプリケーション間のリクエスト/レスポンスにRabbitMQを使用するシステムを設計しています。RabbitMQリクエスト/レスポンスペイロード構造

私はREST APIの作業に慣れており、その背景から来ています。リクエスト/レスポンス時にメッセージを構造化する方法を考えてきました。クライアント側のエラー

の取り扱いリモートサーバ

  • 上のデータを作成するリモートサーバー
  • からデータを照会/取得

    • は、私はいくつかのシナリオを処理するためにそれを構築する必要がありますペイロードJSONをフォーマットする予定です。そして私は、HTTPに似た何らかの応答コード(多分同じコードを使用していますか?)を使用し、応答コードをメッセージのプロパティ/ヘッダーとして設定することを考えていました。

      私の考えを取得/照会するためには、ペイロードオブジェクトにクエリプロパティを持たせることでした。

      しかし、これは私がこれをREST APIのようにあまりにも多く考えているかもしれないと思っており、これを行うためのより良い、より確立された方法があるかもしれません。

      私は「RabbitMQ in Action」という本を読んできましたが、これを設定していますが、そこには何も言及されていません。私のgoogle-fuも私に失敗し、結果を提供していません。

      メッセージの構造を共有したいと思う人は誰ですか?

  • 答えて

    2

    REST呼び出しを処理するための使い慣れたアプリケーションのうち、要求/応答シナリオでRabbitMQを使用している場合は、RabbitMQでメッセージ形式を逸脱する必要はありません。

    あなたの質問から、私が収集したことは、RabbitMQがアプリケーション間の中間サーバーとして機能することです。あなたは3つのシナリオについて言及します。データを取得してデータを書き込む場合、ここではRabbitMQはデータの取得または書き込みを要求するアプリケーションとデータを取得および書き込みするアプリケーションの間のルーターとしてのみ機能します。そうであれば、アプリケーション(データを持つサーバー)をサポートできる標準のメッセージ形式が既に存在します。既に定義されている標準がないとします。この場合、要求ペイロードでアプリケーションが期待する内容について考えることができます。この段階では、中間のRabbitMQサーバを忘れてしまいます。 RabbitMQメッセージについて考えると、ベストプラクティスを使用できなくなる可能性があります。

    クライアント側のエラーについては、消費者のRabbitMQエラーを妨げるため、HTTPステータスコードをヘッダーとして直接設定することはできません。この場合、カスタムヘッダーを渡して後でHTTPステータスコードに変換することで、カスタマイズを使用する必要があります。