1

1 つのリクエストで 6 つのステップを実行するユース ケースがあります。ビジネスは、プロセス内の各ステップの結果についての指標を取得することを要求しています。彼らは、Kinesis ストリームにログを記録するよう求めています。

アーキテクチャ的に、私は最善の解決策を探しています。Java ベースのサービスがあり、リクエストの進行に合わせてリクエスト スコープのオブジェクトを充実させたいと考えています。その後、エンドポイントが終了したら、ファイア アンド フォーゲット パターンを使用して非同期のキネシスへのサービス呼び出しを行います。このようにして、レポートはメインスレッドを遅らせません。

生の ThreadLocal または guice スコープの使用を検討していました。誰かが解決した同様の問題に遭遇しましたか? guice request スコープのコンポーネントを使用することを考えています。これにより、コードが大幅に簡素化されます。いくつかの意見を探しています。ありがとう!

4

1 に答える 1

1

私はあなたがサーブレット環境にいないと仮定しています。なぜなら、組み込みのリクエストスコープを使用するだけだからです。それでも、自分でスコープを構築するguice-servletの request スコープを使用できます。

void processRequest() {
    RequestScoper scope = ServletScopes.scopeRequest(Collections.emptyMap());
    try ( RequestScoper.CloseableScope ignored = scope.open() ) {
        step1();
        step2();
        step3();
        step4();
        step5();
        step6();
    }
}

使用でき@RequestScoped、すべてのステップで同じオブジェクトになります。たとえば、プロバイダーを使用してアクセスできます。

于 2017-04-24T06:33:44.040 に答える