第4章 データソース管理
アプリケーションプロパティーを使用して追加機能を有効にし、データソースを管理できます。
4.1. データソースヘルスチェック リンクのコピーリンクがクリップボードにコピーされました!
Kubernetes などの外部システムは、データソースでヘルスチェックを実行し、アプリケーションが要求に応答できるかどうかを判断します。
quarkus-smallrye-health エクステンションを使用している場合は、quarkus-agroal エクステンションおよびリアクティブクライアントエクステンションが自動的に readiness ヘルスチェックを追加してデータソースを検証します。
データソースの検証ステータスに関する情報を表示するには、アプリケーションの /health/ready エンドポイントにアクセスします。複数のデータソースがある場合、アプリケーションはすべてのデータソースをチェックし、データソースの検証エラーがあると、それらのステータスはエンドポイントで DOWN と一覧表示されます。
この動作は、quarkus.datasource.health.enabled プロパティーを使用して無効にできます。
4.2. データソースメトリクス リンクのコピーリンクがクリップボードにコピーされました!
quarkus-smallrye-metrics エクステンションを使用する場合、quarkus-agroal エクステンションは /metrics エンドポイントでデータソースメトリクスを公開できます。quarkus.datasource.metrics.enabled プロパティーを true に設定すると、この動作が有効になります。
特定のデータソースのメトリクスを無効にするには、quarkus.datasource.jdbc.enable-metrics プロパティーを false に、または名前付きデータソースの quarkus.datasource.<datasource_name>.jdbc.enable-metrics プロパティーを falseに設定できます。これにより、メトリクスの収集が無効になり、/metrics エンドポイントでデータソースを公開します。
特定のデータソースのメトリクスを有効にするには、quarkus.datasource.jdbc.enable-metrics プロパティーを true に、または名前付きの data source の quarkus.datasource.<datasource_name>.jdbc.enable-metrics プロパティーを true に設定することができます。これにより、quarkus-smallrye-metrics エクステンションが有効ではない場合でも、メトリクスの収集が可能になります。
この機能を使用して、収集したメトリクスにプログラムを使用してアクセスできます。収集したメトリクスは、注入された AgroalDataSource インスタンスで dataSource.getMetrics() メソッドの呼び出し後に利用できます。データソースのメトリクスの収集が無効になっている場合、すべての値はゼロになります。
4.3. Narayana Transaction Manager インテグレーション リンクのコピーリンクがクリップボードにコピーされました!
Narayana Transaction Manager インテグレーションは、quarkus-narayana-jta エクステンションが利用可能な場合に自動的に追加されます。
これを上書きするには、quarkus.datasource.jdbc.transactions 設定プロパティーを設定します。
4.4. インメモリーデータベースでのテスト リンクのコピーリンクがクリップボードにコピーされました!
本番環境で使用する予定のデータベースを使用します。コンテナー技術により、これは簡単に実現できます。JVM がサポートするデータベースを使用して、インテグレーションテストを実行することもできます。H2 データベースおよび Derby データベースは、一般的に組み込みモードで使用され、インテグレーションテストの実行に使用されます。
組み込みエンジンは JVM モードで適切に機能しますが、ネイティブ実行可能ファイルにコンパイルすることはできません。Quarkus は、データベースエンジン全体のネイティブ実行可能ファイルへの組み込みをサポートしません。
JVM およびネイティブ実行可能ファイルの両方で、インテグレーションテストを実行する場合は、インテグレーションテストの任意のクラスに @QuarkusTestResource(H2DatabaseTestResource.class) または @QuarkusTestResource(DerbyDatabaseTestResource.class) を追加することができます。テストスイートは、テストの実行に必要な個別のプロセスとして組み込みデータベースを開始および停止できるようになりました。
@QuarkusTestResource(H2DatabaseTestResource.class) および @QuarkusTestResource(DerbyDatabaseTestResource.class) は、それぞれ H2 および Derby に対して Maven のコーディネート io.quarkus:quarkus-test-h2 および io.quarkus:quarkus-test-derby を持つアーティファクトによって提供されます。
以下の例は、H2 データベースでヘルパーを使用する方法を示しています。
これにより、データベースが通常どおりに JVM で実行される間、アプリケーションがネイティブ実行可能ファイルにコンパイルされていても、アプリケーションをテストすることができます。
以下を使用して接続します。
quarkus.datasource.db-kind=h2 quarkus.datasource.jdbc.url=jdbc:h2:tcp://localhost/mem:test
quarkus.datasource.db-kind=h2
quarkus.datasource.jdbc.url=jdbc:h2:tcp://localhost/mem:test