2017-11-29 9 views
1

私は自分のサービスAのHystrix fallback()メソッドを有効にしました。従属サービスBがダウンしているときはいつでも、フォールバックメソッドに行き、私が提供した静的メッセージを表示します。hystrixにはキュー内の保留中の要求を回復する機能がありますか?

私も、MQ(ウサギMQ)今

に失敗した要求を送信していますこれをやっている間、どのように私は、キュー内の保留中または待機中の要求を取得し、依存サービスBがアップしているときにそれを再処理することができますか?

+0

@ ahus1私はあなたがヒステリックの経験を手にしているのを見たので、これで私を助けてくれますか? – maniker

+0

あなたの質問には次のようなタイトルがあります。「hystrixにはキュー内の保留中の要求を回復する機能がありますか? – leanne

+0

はい:-)回線を開いて、失敗した要求をキューに送信できますが、サーキットが終了すると、回線が閉じられ、保留中の要求を前処理しますか? – maniker

答えて

0

あなたのアーキテクチャ(ここでは範囲を超えています)の全体的な概要がないと、達成しようとしていることを正確に知ることは難しいです。しかし一見、Hystrixがあまりにも多くを期待しているように聞こえる。フォールバックが完了すると、完了です。

キューにメッセージを送信した場合は、そのメッセージをどこかから消費する必要があります。サービスBが実行されているときにのみメッセージを消費したいので、論理的に唯一のオプションは、サービスBがこの失敗した要求キューから消費することです。おそらくそのメッセージを消費すると、サービスBはサービスAに関するリクエストを繰り返す必要があります。

失敗したリクエストキューからのメッセージを受信すると、ウォッチドッグサービスを使用して、サービスBの "緑"が消えたら、サービスAのリクエストを再試行します。

すべて私には非常に絡み合っているようですが、私は再考をお勧めします。

この静的メッセージは、「申し訳ありませんが、今はリクエストを完了できませんでしたが、私たちはあなたのためにバックグラウンドでお試しになります」と推測しています。

サービスBを純粋にメッセージ駆動型にした方が良いと思います。サービスAを取得して、サービスBに直接メッセージを送信します。サービスがダウンしたり、オーバーロードされたり、何かが心配する必要はありません。

+0

私がやっていることを説明してもらえれば、エンティティサービス(動詞ベースのサービスB)と呼び出しサービス(名詞ベースサービスA)の2つのサービスがあるので、ここでは私のサービスAからサービスB(エンティティサービス)に電話をかけてください。エンティティサービスは、サービスAからリクエストを受け取り、DBからトランザクションを作成し、それをサービスAに送信し、メッセージまたはデータなどを表示します。したがって、今すぐサービスBがダウンして回線を開き、メッセージを送信できます"リソースのURIがダウンしているとすぐに" mqに、私はBがアップした後にそれを再処理することができます – maniker

+0

まああなたは本当にあなたの質問をここで再起しました。私が知る限り、Hystrixにはあなたが探している機能がなく、とにかく過度に複雑になります。私はあなたのサービスBで信頼性のない稼働時間が予想される場合は、代わりにメッセージ駆動のサービスにしておきます。成功すると、BはAに通知し、UIなどを動的に更新できます。 –

関連する問題