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
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
# 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 を組み込むことは推奨されません。代わりに別のデータベースへのリモート接続を使用するなど、別の方法を検討してください。