次の方法で共有


Java 用 Azure Cosmos Test クライアント ライブラリ - バージョン 1.0.0-beta.6

Azure Cosmos DB SDK ライブラリをテストするために使用されるコア フォールト インジェクション クラスを含むライブラリ。

作業の開始

パッケージを組み込む

<dependency>
  <groupId>com.azure</groupId>
  <artifactId>azure-cosmos-test</artifactId>
  <version>1.0.0-beta.6</version>
</dependency>

前提条件

  • バージョン 8 以降の Java Development Kit (JDK)
  • アクティブな Azure アカウントアカウントがない場合、Azure 試用版にサインアップして、最大 10 件の無料 Mobile Apps を入手できます。 お持ちでない場合は、 無料アカウントにサインアップしてください。 または、Azure Cosmos DB Emulator を使用して、開発とテストを行うこともできます。 エミュレーターの HTTPS 証明書は自己署名されているため、こちらの説明に従って、その証明書を Java の信頼された証明書ストアにインポートする必要があります
  • (省略可能) ログ記録ファサードの SLF4J。
  • (省略可能) SLF4J バインディング を使用して、特定のログ記録フレームワークを SLF4J と関連付けます。
  • (省略可能) Maven

SLF4J は、ログ記録を使用する場合にのみ必要です。また、SLF4J API と選択したログ記録の実装をリンクする SLF4J バインディングもダウンロードしてください。 詳細については、SLF4J のユーザー マニュアルを参照してください。

SDK には、Reactor Core ベースの非同期 API が用意されています。 リアクタ コアと Flux/Mono の種類の詳細については、こちらを参照してください

主要な概念

Azure Cosmos テスト ライブラリを使用して、Azure Cosmos SDK for Java にエラーを挿入できます。

次のセクションでは、次のような最も一般的な障害挿入シナリオの作成方法を説明するいくつかのコード スニペットを示します。

高チャネル取得シナリオ

FaultInjectionRule serverConnectionDelayRule =
    new FaultInjectionRuleBuilder("<YOUR RULE ID>")
        .condition(
            new FaultInjectionConditionBuilder()
                .operationType(FaultInjectionOperationType.CREATE_ITEM)
                .build()
        )
        .result(
            FaultInjectionResultBuilders
                .getResultBuilder(FaultInjectionServerErrorType.CONNECTION_DELAY)
                .delay(Duration.ofSeconds(6)) // default connection timeout is 5s
                .times(1)
                .build()
        )
        .duration(Duration.ofMinutes(5))
        .build();

CosmosFaultInjectionHelper.configureFaultInjectionRules(container, Arrays.asList(serverConnectionDelayRule)).block();

切断された接続のシナリオ

FaultInjectionRule timeoutRule =
    new FaultInjectionRuleBuilder("<YOUR RULE ID>")
        .condition(
            new FaultInjectionConditionBuilder()
                .operationType(FaultInjectionOperationType.READ_ITEM)
                .build()
        )
        .result(
            FaultInjectionResultBuilders
                .getResultBuilder(FaultInjectionServerErrorType.RESPONSE_DELAY)
                .times(1)
                .delay(Duration.ofSeconds(6)) // the default time out is 5s
                .build()
        )
        .duration(Duration.ofMinutes(5))
        .build();

CosmosFaultInjectionHelper.configureFaultInjectionRules(container, Arrays.asList(timeoutRule)).block();

Server Return Gone シナリオ

FaultInjectionRule serverErrorRule =
    new FaultInjectionRuleBuilder("<YOUR RULE ID>")
        .condition(
            new FaultInjectionConditionBuilder()
                .operationType(FaultInjectionOperationType.READ_ITEM)
                .build()
        )
        .result(
            FaultInjectionResultBuilders
                .getResultBuilder(FaultInjectionServerErrorType.GONE)
                .times(1)
                .build()
        )
        .duration(Duration.ofMinutes(5))
        .build();

CosmosFaultInjectionHelper.configureFaultInjectionRules(container, Arrays.asList(serverErrorRule)).block();

ランダム接続の終了シナリオ

FaultInjectionRule connectionErrorRule =
    new FaultInjectionRuleBuilder("<YOUR RULE ID>")
        .condition(
            new FaultInjectionConditionBuilder()
                .operationType(FaultInjectionOperationType.CREATE_ITEM)
                .endpoints(new FaultInjectionEndpointBuilder(FeedRange.forLogicalPartition(new PartitionKey("<YOUR PARTITION KEY>"))).build())
                .build()
        )
        .result(
            FaultInjectionResultBuilders
                .getResultBuilder(FaultInjectionConnectionErrorType.CONNECTION_CLOSE)
                .interval(Duration.ofSeconds(1))
                .threshold(1.0)
                .build()
        )
        .duration(Duration.ofSeconds(2))
        .build();

CosmosFaultInjectionHelper.configureFaultInjectionRules(container, Arrays.asList(connectionErrorRule)).block();

トラブルシューティング

全般

Azure Cosmos DB は、高速で柔軟性に優れた分散データベースです。待機時間とスループットが保証されており、シームレスにスケーリングできます。 Azure Cosmos DB でデータベースをスケーリングするために、アーキテクチャを大きく変更したり、複雑なコードを記述したりする必要はありません。 スケールアップとスケールダウンは、API 呼び出しか SDK メソッド呼び出しを 1 回行うだけで簡単に実行できます。 ただし、Azure Cosmos DB にはネットワーク呼び出しによってアクセスするため、Azure Cosmos DB Java SDK v4 を使用するときに最高のパフォーマンスを実現するために、クライアント側の最適化を行うことができます。

  • パフォーマンス ガイドでは、これらのクライアント側の最適化について説明します。

  • トラブルシューティング ガイド では、Azure Cosmos DB SQL API アカウントで Azure Cosmos DB Java SDK v4 を使用する場合の一般的な問題、回避策、診断手順、ツールについて説明します。

クライアントのログ記録を有効にする

次の手順

共同作成

このプロジェクトでは、共同作成と提案を歓迎しています。 ほとんどの共同作成では、共同作成者使用許諾契約書 (CLA) にご同意いただき、ご自身の共同作成内容を使用する権利を Microsoft に供与する権利をお持ちであり、かつ実際に供与することを宣言していただく必要があります。

pull request を送信すると、CLA を提供して PR (ラベル、コメントなど) を適宜装飾する必要があるかどうかを CLA ボットが自動的に決定します。 ボットによって提供される手順にそのまま従ってください。 この操作は、Microsoft の CLA を使用するすべてのリポジトリについて、1 回だけ行う必要があります。

このプロジェクトでは、Microsoft オープン ソースの倫理規定を採用しています。 詳しくは、「Code of Conduct FAQ (倫理規定についてよくある質問)」を参照するか、opencode@microsoft.com 宛てに質問またはコメントをお送りください。