Hystrix は、バックエンド API が実行されても、fallbackMethod を呼び出します

ジャミール

Hystrix をマイクロサービス プロジェクトに実装しようとしています。質問を単純かつ簡潔にするために、以下のシナリオについて説明します。

(a) ときどきパフォーマンスが低下するバックエンド サービスへの呼び出し (支払いサービスなど)

(b) @Hystrix でメソッドに注釈を付けました (支払いサービスを呼び出しているところから)。また、対応するフォールバック メソッドを実装しました。

(c) 以下は、同じコード スニペットです。

@HystrixCommand(fallbackMethod = "fallbackProcessPayment")
public String processPayment(User user) throws Exception
{  
    // Call the payment service (which is slow in nature) to process the payment for the user....
}

 public String fallbackProcessPayment(User user){       
    // This is the fallback method for processPayment....
    // Gracefully handle the processPayment 
}

In the config.properties file timeout is configured as 
hystrix.command.getUseCase1.execution.isolation.thread.timeoutInMilliseconds=2000

現在の動作 - バックエンドの支払いサービスの呼び出しが processPayment(..) メソッドから行われるとすぐに、hystrix.command.getUseCase1.execution.isolation.thread.timeoutInMilliseconds で設定したよりも長く (~ 4000 ミリ秒) かかります。 (2000 ミリ秒) したがって、Hystrix は fallbackProcessPayment (...) を呼び出しますが、バックエンドの支払いサービスも低速ではありますが実行されるという事実もあります。これは、支払いがバックグラウンドで処理されているため、望ましくない動作です。これは、支払いを処理できないことをユーザーに通知するためです (フォールバック メソッドを介して)。 2 秒以内の応答 (timeoutInMilliseconds 構成に基づく)。

正しく動作させるために欠けている構成はありますか?

これへのポインタは非常に役立ちます。

御時間ありがとうございます

pvpkiran

上手。これは、hystrix の予想される動作です。いくつかのオプションがあります。
1. タイムアウトを増やすか
2. フォールバック メソッドで、メソッドが失敗する理由を確認します。つまり、どの例外について。(これを知るThrowableには、フォールバック メソッドがトリガーされる例外を持つタイプのフォールバック メソッドに引数を追加します)。失敗の原因がタイムアウトの場合は、コードを記述して、応答を返す前に前のプロセスが完了したかどうかを確認できます。

ただし、しきい値を 5 に設定していて、タイムアウトが原因で 5 件のリクエストが失敗した場合、6 番目のリクエストはフォールバック メソッドに直接送信されるため、2 番目のアプローチは実行できません。前のプロセスが完了したかどうかを確認しても意味がありません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Hystrixは、エラーが初めて発生したときにのみfallbackMethodを実行します

分類Dev

Spring Cloud Feignクライアント呼び出しはhystrixコマンド内で実行されますか?

分類Dev

バックエンドまたはフロントエンドでサードパーティのAPI呼び出しを行う必要がありますか?

分類Dev

.NETを使用してAzureMobileServiceバックエンドでapi / statusを呼び出す方法は?

分類Dev

検索-ネイティブに処理しますか、それともAPI呼び出しを行いますか?(Android、Node.JS、MongoDBバックエンド)

分類Dev

バックエンドAPIを呼び出すときにaccess_tokenまたはid_tokenを介してユーザーを識別する

分類Dev

反応フックを使用していると、APIが何度も呼び出されます

分類Dev

Angular6-ngx-translateを使用してバックエンドへのAPI呼び出しを使用して翻訳をロードします

分類Dev

Angular HTTP observableがn秒以内に応答しない場合は、バックグラウンドでAPI呼び出しを実行します

分類Dev

バックエンドサーバーが起動するたびにfastapiでAPIを直接呼び出す方法はありますか?

分類Dev

Mac OS Xアプリをコード署名すると、API呼び出しが実行されません

分類Dev

Hystrixフォールバックメソッドが呼び出されない

分類Dev

Hystrixフォールバックメソッドが呼び出されない

分類Dev

HystrixコマンドはHystrix環境では実行されません

分類Dev

バックエンドへのAPI呼び出しから情報を取得するために追加しようとしています

分類Dev

Spring AMQP:[RabbitTemplate] RabbitTemplate ReturnCallbackの実行時に、Hystrixフォールバックが呼び出されない

分類Dev

リクエストが完了としてマークされるまで外部APIを呼び出します

分類Dev

Feign.BuilderでFeignクライアントを手動で作成した場合、Hystrixフォールバックメソッドが呼び出されない

分類Dev

React-非同期API呼び出し、Promise.allは呼び出しが終了するのを待ちます

分類Dev

JSは、関数を呼び出すか呼び出さないかによって異なる反応を示します(google maps apiが使用されます)

分類Dev

clearIntervalが呼び出された後も、setIntervalは実行を継続します

分類Dev

clearTimeoutが呼び出された後も、setTimeoutは実行を継続します

分類Dev

AngularのHttpInterceptorで実際のhttp呼び出しが行われる前に、別のhttp apiを(インターセプトなしで)呼び出します

分類Dev

RXJS reduxobservableは複数のAPI呼び出しを実行します

分類Dev

Celeryタスク内でAPIを呼び出しても返されません

分類Dev

Apiはwebrequestを介して呼び出すと403エラーを返しますが、postmanを呼び出すと機能します

分類Dev

クリップボードAPI呼び出しは、onPermissionRequest()を呼び出さずにNotAllowedErrorをスローします

分類Dev

バックエンドAPI名は何ですか?それはどこにある?AndroidStudioクライアントからGoogleCloudエンドポイントバックエンドAPIを呼び出す

分類Dev

cxfwebclientはTLSV1を使用してAPIを呼び出します

Related 関連記事

  1. 1

    Hystrixは、エラーが初めて発生したときにのみfallbackMethodを実行します

  2. 2

    Spring Cloud Feignクライアント呼び出しはhystrixコマンド内で実行されますか?

  3. 3

    バックエンドまたはフロントエンドでサードパーティのAPI呼び出しを行う必要がありますか?

  4. 4

    .NETを使用してAzureMobileServiceバックエンドでapi / statusを呼び出す方法は?

  5. 5

    検索-ネイティブに処理しますか、それともAPI呼び出しを行いますか?(Android、Node.JS、MongoDBバックエンド)

  6. 6

    バックエンドAPIを呼び出すときにaccess_tokenまたはid_tokenを介してユーザーを識別する

  7. 7

    反応フックを使用していると、APIが何度も呼び出されます

  8. 8

    Angular6-ngx-translateを使用してバックエンドへのAPI呼び出しを使用して翻訳をロードします

  9. 9

    Angular HTTP observableがn秒以内に応答しない場合は、バックグラウンドでAPI呼び出しを実行します

  10. 10

    バックエンドサーバーが起動するたびにfastapiでAPIを直接呼び出す方法はありますか?

  11. 11

    Mac OS Xアプリをコード署名すると、API呼び出しが実行されません

  12. 12

    Hystrixフォールバックメソッドが呼び出されない

  13. 13

    Hystrixフォールバックメソッドが呼び出されない

  14. 14

    HystrixコマンドはHystrix環境では実行されません

  15. 15

    バックエンドへのAPI呼び出しから情報を取得するために追加しようとしています

  16. 16

    Spring AMQP:[RabbitTemplate] RabbitTemplate ReturnCallbackの実行時に、Hystrixフォールバックが呼び出されない

  17. 17

    リクエストが完了としてマークされるまで外部APIを呼び出します

  18. 18

    Feign.BuilderでFeignクライアントを手動で作成した場合、Hystrixフォールバックメソッドが呼び出されない

  19. 19

    React-非同期API呼び出し、Promise.allは呼び出しが終了するのを待ちます

  20. 20

    JSは、関数を呼び出すか呼び出さないかによって異なる反応を示します(google maps apiが使用されます)

  21. 21

    clearIntervalが呼び出された後も、setIntervalは実行を継続します

  22. 22

    clearTimeoutが呼び出された後も、setTimeoutは実行を継続します

  23. 23

    AngularのHttpInterceptorで実際のhttp呼び出しが行われる前に、別のhttp apiを(インターセプトなしで)呼び出します

  24. 24

    RXJS reduxobservableは複数のAPI呼び出しを実行します

  25. 25

    Celeryタスク内でAPIを呼び出しても返されません

  26. 26

    Apiはwebrequestを介して呼び出すと403エラーを返しますが、postmanを呼び出すと機能します

  27. 27

    クリップボードAPI呼び出しは、onPermissionRequest()を呼び出さずにNotAllowedErrorをスローします

  28. 28

    バックエンドAPI名は何ですか?それはどこにある?AndroidStudioクライアントからGoogleCloudエンドポイントバックエンドAPIを呼び出す

  29. 29

    cxfwebclientはTLSV1を使用してAPIを呼び出します

ホットタグ

アーカイブ