1.3. データソースのインテグレーション
1.3.1. データソースヘルスチェック
quarkus-smallrye-health
エクステンションを使用する場合は、quarkus-agroal
エクステンションおよびリアクティブクライアントエクステンションが自動的にレディネスヘルスチェックを追加してデータソースを検証します。
アプリケーションのヘルスレディネスエンドポイント (デフォルトは /q/health/ready)
にアクセスすると、データソースの検証ステータスに関する情報を受け取ります。複数のデータソースがある場合はすべてのデータソースがチェックされ、そのうちの 1 つでもデータソース検証に失敗すると、ステータスが DOWN
に遷移します。
この動作は、quarkus.datasource.health.enabled
プロパティーを使用して無効にできます。
特定のデータソースのみをヘルスチェックから除外するには、以下を使用します。
quarkus.datasource."datasource-name".health-exclude=true
1.3.2. データソースメトリクス
quarkus-micrometer
または quarkus-smallrye-metrics
エクステンションを使用している場合、quarkus-agroal
は一部のデータソース関連のメトリクスをメトリクスレジストリーに提供できます。これは、quarkus.datasource.metrics.enabled
プロパティーを true
に設定することでアクティブ化できます。
メトリクスに実際の値を含むメトリクスを公開するには、Agroal メカニズムを使用して内部でメトリクスを有効にする必要があります。メトリクスエクステンションが存在し、Agroal エクステンションのメトリクスが有効になっている場合、このメトリクス収集メカニズムはデフォルトですべてのデータソースに対して有効になります。
特定のデータソースのメトリクスを無効にするには、quarkus.datasource.jdbc.enable-metrics
を false
に設定するか、名前付きデータソースに quarkus.datasource.<datasource name>.jdbc.enable-metrics
を適用します。これにより、収集メカニズムが無効の場合は、メトリクスの収集と /q/metrics
エンドポイントへの公開が無効になります。
逆に、quarkus.datasource.jdbc.enable-metrics
を true
に設定するか、名前付きデータソースに quarkus.datasource.<datasource name>.jdbc.enable-metrics
を設定すると、メトリクスエクステンションが使用されていない場合でもメトリクス収集が明示的に有効になります。これは、収集されたメトリクスにプログラムを使用してアクセスする必要がある場合に役立ちます。これらは、注入された AgroalDataSource
インスタンスで dataSource.getMetrics()
を呼び出すと使用可能になります。
このデータソースのメトリクス収集が無効になっている場合、すべての値はゼロになります。
1.3.3. データソースのトレース
データソースでトレースを使用するには、quarkus-opentelemetry
エクステンションをプロジェクトに追加する必要があります。
トレーシングが必要なため、別のドライバーを宣言する必要はありません。JDBC ドライバーを使用する場合は、ここ で OpenTelemetry エクステンションの手順に従う必要があります。
すべてのトレースインフラストラクチャーを使用しても、データソーストレースはデフォルトで有効になっていません。そのため、このプロパティーを設定して有効にする必要があります。
# enable tracing quarkus.datasource.jdbc.telemetry=true
1.3.4. Narayana Transaction Manager のインテグレーション
Narayana JTA エクステンションも使用できる場合、インテグレーションは自動的に行われます。
これは、transactions
設定プロパティーを設定することでオーバーライドできます。
-
デフォルトの名前が指定されていないデータソースの
quarkus.datasource.jdbc.transactions
-
名前付きデータソースの
quarkus.datasource.<datasource-name>.jdbc.transactions
詳細は、後述の 設定リファレンス セクションを参照してください。
データベースへのトランザクションログの保存を JDBC を使用して容易にするには、Quarkus でのトランザクションの使用 ガイドの データソースに保存されるトランザクションログの設定 セクションを参照してください。
1.3.4.1. 名前付きデータソース
Dev Services を使用する場合、必ずデフォルトのデータソースが作成されます。しかし、名前付きデータソースを指定するには、Quarkus がデータソースの作成方法を検出できるように、少なくとも 1 つのビルドタイムプロパティーが必要です。
通常は、db-kind
プロパティーを指定するか、quarkus.datasource."name".devservices.enabled=true
を設定して Dev Services を明示的に有効にします。
1.3.5. in-memory データベースを使用したテスト
H2 や Derby などの一部のデータベースは、結合テストを迅速に実行するファシリティーとして頻繁に 組み込みモード で使用されます。
この場合、実稼働環境で使用する予定の実際のデータベースを使用することが推奨されます。特に Dev Services がテスト用にゼロコンフィグデータベースを提供 しており、比較的迅速にコンテナーをテストでき、実際の環境で期待どおりの結果が得られる場合に当てはまります。ただし、単純な結合テストを実行する機能が必要なシナリオでは、JVM 対応データベースを使用することもできます。
1.3.5.1. サポートと制限事項
組み込みデータベース (H2 および Derby) は JVM モードで動作します。ネイティブモードの場合、次の制限が適用されます。
- ネイティブモードでは、Derby をアプリケーションに組み込めません。ただし、Quarkus Derby エクステンションを使用すると、Derby JDBC クライアント のネイティブコンパイルが可能になり、リモート 接続がサポートされます。
- ネイティブイメージに H2 を組み込むことは推奨されません。代わりに別のデータベースへのリモート接続を使用するなど、別の方法を検討してください。