次の方法で共有


.NET Aspire NATS 統合

含まれるもの:ホスティング統合Client 統合

NATS は、高パフォーマンスでセキュリティで保護された分散メッセージング システムです。 .NET Aspire NATS 統合を使用すると、既存の NATS インスタンスに接続したり、.NETを使用して docker.io/library/nats から新しいインスタンスを作成したりできます。

ホスティング統合

NATS のホスティング統合により、.NET Aspire モデルが NATS サーバーを NatsServerResource タイプとしてモデル化します。 この種類にアクセスするには、📦Aspireをインストールします。Hosting.Nats nuGet パッケージを アプリ ホスト プロジェクトに追加し、ビルダーに追加します。

dotnet add package Aspire.Hosting.Nats

詳細については、「dotnet パッケージ の追加」または「.NET アプリケーションでのパッケージの依存関係の管理」を参照してください。

NATS サーバーリソースを追加する

アプリ ホスト プロジェクトで、AddNats インスタンスの builder を呼び出して、NATS サーバー リソースを追加します。

var builder = DistributedApplication.CreateBuilder(args);

var nats = builder.AddNats("nats");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(nats);

// After adding all resources, run the app...

.NET .NET Aspire 前の例に示すように、docker.io/library/nats イメージを使用してコンテナー イメージをアプリ ホストに追加すると、ローカル コンピューターに新しい NATS サーバー インスタンスが作成されます。 NATS サーバーへの参照 (nats 変数) が ExampleProjectに追加されます。

WithReference メソッドは、ExampleProjectという名前の "nats" で接続を構成します。 詳細については、「コンテナー リソースのライフサイクルの」を参照してください。

ヒント

既存の NATS サーバーに接続する場合は、代わりに AddConnectionString を呼び出します。 詳細については、「既存のリソースを参照する」を参照してください。

JetStream NATS サーバー リソースを追加する

NATS サーバー リソースに NATS を追加するには、WithJetStream メソッドを呼び出します。

var builder = DistributedApplication.CreateBuilder(args);

var nats = builder.AddNats("nats");
                  .WithJetStream();

builder.AddProject<Projects.ExampleProject>()
       .WithReference(nats);

// After adding all resources, run the app...

NATS JetStream 機能は、JetStream と呼ばれる組み込みの永続化エンジンを提供します。これにより、後でメッセージを格納して再生できます。 必要に応じて、srcMountPath パラメーターを指定して、ホスト コンピューター上の JetStream データ ディレクトリへのパスを指定できます (指定されたマウント パスはコンテナーの -sd 引数にマップされます)。

NATS サーバーリソースをデータボリュームで追加する

NATS サーバー リソースにデータ ボリュームを追加するには、WithDataVolume サーバー リソースで NATS メソッドを呼び出します。

var builder = DistributedApplication.CreateBuilder(args);

var nats = builder.AddNats("nats");
                  .WithDataVolume(isReadOnly: false);

builder.AddProject<Projects.ExampleProject>()
       .WithReference(nats);

// After adding all resources, run the app...

データ ボリュームは、コンテナーのライフサイクル外に NATS サーバー データを保持するために使用されます。 データ ボリュームは、/var/lib/nats サーバー コンテナーの NATS パスにマウントされます。 set name パラメーターを指定しない限り、名前はランダムに生成されます。 データボリュームと、それがバインドマウントよりも好まれる理由についての詳細を知りたい場合は、「Docker ドキュメント: ボリューム」を参照してください。

NATSサーバーのリソースをデータバインドマウントで追加する

NATS サーバー リソースにデータ バインド マウントを追加するには、WithDataBindMount メソッドを呼び出します。

var builder = DistributedApplication.CreateBuilder(args);

var nats = builder.AddNats("nats");
                  .WithDataBindMount(
                      source: @"C:\NATS\Data",
                      isReadOnly: false);

builder.AddProject<Projects.ExampleProject>()
       .WithReference(nats);

// After adding all resources, run the app...

大事な

データ バインド マウント、パフォーマンス、移植性、およびセキュリティが向上し、運用環境に適した ボリュームと比較して機能が制限されています。 ただし、バインド マウントを使用すると、ホスト システム上のファイルに直接アクセスして変更できるため、リアルタイムの変更が必要な開発とテストに最適です。

データ バインド マウントは、ホスト マシンのファイルシステムに依存して、コンテナーの再起動時に NATS サーバー データを保持します。 データ バインド マウントは、C:\NATS\Data サーバー コンテナー内のホスト コンピューター上の Windows 上の /NATS/Data (または Unix上の NATS) パスにマウントされます。 データ バインド マウントの詳細については、Docker ドキュメントの「Bind mounts」を参照してください。

ホスティング統合の正常性チェック

NATS ホスティング統合により、NATS サーバー リソースの正常性チェックが自動的に追加されます。 正常性チェックでは、NATS サーバーが実行されていること、およびサーバーへの接続を確立できることを確認します。

ホスティング統合は、📦 AspNetCore.HealthChecks.Nats NuGet パッケージに依存します。

Client 統合

.NET Aspire NATS クライアント統合を開始するには、📦Aspireをインストールします。クライアントを使用するプロジェクト、つまり NATS クライアントを利用するアプリケーションのプロジェクトに、.Net NuGet パッケージNATSをインストールしてください。 NATS クライアント統合は、との対話に使用できる NATS インスタンスを登録します。

dotnet add package Aspire.NATS.Net

クライアント NATS 追加する

クライアントを使用するプロジェクトの Program.cs ファイルで、任意の AddNatsClientIHostApplicationBuilder 拡張メソッドを呼び出して、依存関係挿入コンテナーを介して使用する INatsConnection を登録します。 このメソッドは、接続名パラメーターを受け取ります。

builder.AddNatsClient(connectionName: "nats");

ヒント

connectionName パラメーターは、アプリ ホスト プロジェクトに NATS サーバー リソースを追加するときに使用する名前と一致する必要があります。 詳細については、「NATS サーバー リソースの追加」を参照してください。

その後、依存関係の挿入を使用して INatsConnection インスタンスを取得できます。 たとえば、サービスからクライアントを取得するには、次のようにします。

public class ExampleService(INatsConnection connection)
{
    // Use connection...
}

依存性注入の詳細については、.NET 依存性注入を参照してください。

キー付き NATS クライアントを追加する

接続名が異なる複数の INatsConnection インスタンスを登録する場合があります。 キー付き NATS クライアントを登録するには、AddKeyedNatsClient メソッドを呼び出します。

builder.AddKeyedNatsClient(name: "chat");
builder.AddKeyedNatsClient(name: "queue");

その後、依存関係の挿入を使用して IConnection インスタンスを取得できます。 たとえば、サービスの例から接続を取得するには、次のようにします。

public class ExampleService(
    [FromKeyedServices("chat")] INatsConnection chatConnection,
    [FromKeyedServices("queue")] INatsConnection queueConnection)
{
    // Use connections...
}

キー付きサービスの詳細については、「.NET 依存関係の挿入: キー付きサービスの」を参照してください。

設定

.NET Aspire NATS 統合には、プロジェクトの要件と規則に基づいて NATS 接続を構成するための複数のオプションが用意されています。

接続文字列を使用する

builder.AddNatsClientを呼び出すときに接続文字列の名前を指定します。

builder.AddNatsClient(connectionName: "nats");

接続文字列は、ConnectionStrings 構成セクションから取得されます。

{
  "ConnectionStrings": {
    "nats": "nats://nats:4222"
  }
}

この接続文字列の書式を設定する方法の詳細については、ConnectionString のドキュメント を参照してください。

構成プロバイダーを使用する

.NET Aspire NATS 統合では、Microsoft.Extensions.Configurationがサポートされます。 NatsClientSettings キーを使用して、構成から Aspire:Nats:Client を読み込みます。 次のスニペットは、いくつかのオプションを構成する appsettings.json ファイルの例です。

{
  "Aspire": {
    "Nats": {
      "Client": {
        "ConnectionString": "nats://nats:4222",
        "DisableHealthChecks": true,
        "DisableTracing": true
      }
    }
  }
}

完全な NATS クライアント統合 JSON スキーマについては、AspireNATSを参照してください。 .Net/ConfigurationSchema.jsonにアクセスします。

インライン デリゲートを使用する

Action<NatsClientSettings> configureSettings デリゲートを渡して、一部またはすべてのオプションをインラインで設定します。たとえば、コードから正常性チェックを無効にします。

builder.AddNatsClient(
    "nats",
    static settings => settings.DisableHealthChecks  = true);

NATS マニフェスト内の .NET Aspire

NATS は、.NET Aspire配置マニフェストの一部ではありません。 NATSの外部で、セキュリティで保護された運用 .NET Aspire サーバーを設定することをお勧めします。

Client 統合の診断チェック

既定では、.NET.NET Aspire 統合により、すべてのサービス 正常性チェック が有効になります。 詳細については、.NET.NET Aspire 統合の概要を参照してください。

.NET Aspire NATS 統合では、次の処理が行われます。

  • /health HTTP エンドポイントと統合されます。このエンドポイントは、アプリがトラフィックを受け入れる準備ができていると見なされるために、登録されているすべての正常性チェックに合格する必要があります。

可観測性とテレメトリ

統合により、ログ記録、トレース、メトリックの構成が自動的に設定されます。これは、監視の柱 とも呼ばれます。 統合の可観測性とテレメトリの詳細については、統合の概要 参照してください。 バッキング サービスによっては、一部の統合でこれらの機能の一部のみがサポートされる場合があります。 たとえば、一部の統合ではログ記録とトレースがサポートされますが、メトリックはサポートされません。 テレメトリ機能は、「構成」セクションに記載されている手法を使用して無効にすることもできます。

伐採

.NET Aspire NATS 統合では、次のログ カテゴリが使用されます。

  • NATS

トレース

.NET Aspire NATS 統合では、次のトレース アクティビティが出力されます。

  • NATS.Net

関連項目