1

私のherokuWebサービスからの応答が失われることに関連する競合状態のように見えます。

herokuルーターはリクエストをWebサービスに配信し、Webサービスはリクエストを処理して応答を返しますが、その間、herokuルーターはクライアント(割り込み)またはバックエンドのタイムアウトのためにリクエストに失敗します。

問題は、Webサービス要求処理がバックエンドで状態を変更し、応答の本文で状態変更をクライアントに送信することを期待していることです。応答がクライアントに到達することはないため、状態の変化は永久に失われます。

私の場合の状態変化は、RabbitMQメッセージキューからのメッセージの配信と削除です。Webサービス要求ハンドラーはRabbitMQキューから要求をポップしますが、クライアントに到達できず、二度と聞かれることはありません。

これを軽減するために、独自のクライアントベースのメッセージACKシステムを実装できます。ただし、応答がクライアントに確実に届くようにする方法に関して、より良い解決策があるかもしれないと思います。応答が失われたかどうかを判断するためにWebサービスで使用できるコールバックはありますか?FWIW私のWebサービスは、組み込みJettyを実行するJAX-RSサービスです。

ありがとう!

4

0 に答える 0