.NET Aspire NATS 統合
NATS は、高パフォーマンスでセキュリティで保護された分散メッセージング システムです。
.NET Aspire
NATS 統合を使用すると、既存の NATS インスタンスに接続したり、docker.io/library/nats
を使用して から新しいインスタンスを作成したりできます。
ホスティング統合
NATS のホスティング統合は、.NET Aspire モデルを NATS の種類として serverNatsServerResource にモデル化します。 この種類にアクセスするには、📦Aspireをインストールします。ホスティング。Nats プロジェクトに NuGet パッケージを し、ビルダーで追加します。
dotnet add package Aspire.Hosting.Nats
詳細については、「dotnet パッケージ の追加」または「.NET アプリケーションでのパッケージの依存関係の管理」を参照してください。
リソース NATSserver 追加する
アプリ ホスト プロジェクトで、AddNats インスタンスの builder
を呼び出して、NATSserver リソースを追加します。
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
イメージでコンテナー イメージをアプリ ホストに追加すると、ローカル コンピューターに新しい NATSserver インスタンスが作成されます。
NATS
server への参照 (nats
変数) が ExampleProject
に追加されます。
WithReference メソッドは、ExampleProject
という名前の "nats"
で接続を構成します。 詳細については、「コンテナー リソースのライフサイクルの」を参照してください。
ヒント
既存の NATSserverに接続する場合は、代わりに AddConnectionString 呼び出します。 詳細については、「既存のリソースを参照する」を参照してください。
NATS server リソースをJetStreamで追加する
NATS リソースに server を追加するには、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
引数にマップされます)。
データボリュームを伴う NATSserver リソースを追加する
NATS server リソースにデータ ボリュームを追加するには、WithDataVolumeNATS リソースで server メソッドを呼び出します。
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...
データ ボリュームは、コンテナーのライフサイクル外に NATSserver データを保持するために使用されます。 データ ボリュームは、/var/lib/nats
NATS コンテナーの server パスにマウントされます。 set name
パラメーターを指定しない限り、名前はランダムに生成されます。 データボリュームと、それがバインドマウントよりも好まれる理由についての詳細を知りたい場合は、「Docker ドキュメント: ボリューム」を参照してください。
NATS server リソースをデータ バインドマウントで追加する
NATS server リソースにデータ バインド マウントを追加するには、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...
大事な
データ バインド マウント、パフォーマンス、移植性、およびセキュリティが向上し、運用環境に適した ボリュームと比較して機能が制限されています。 ただし、バインド マウントを使用すると、ホスト システム上のファイルに直接アクセスして変更できるため、リアルタイムの変更が必要な開発とテストに最適です。
データ バインド マウントは、ホスト マシンのファイルシステムに依存して、コンテナーの再起動間に NATSserver データを保持します。 データ バインド マウントは、C:\NATS\Data
/NATS/Data
コンテナー内のホスト コンピューター上の Windows 上の Unix (または NATSで server) パスにマウントされます。 データ バインド マウントの詳細については、Docker ドキュメントの「Bind mounts」を参照してください。
ホスティング統合の正常性チェック
NATS ホスティング統合により、NATSserver リソースの正常性チェックが自動的に追加されます。 正常性チェックでは、NATSserver が実行されていることと、NATSserver への接続を確立できることを確認します。
ホスティング統合は、📦 AspNetCore.HealthChecks とNats NuGet パッケージに依存しています。
Client 統合
.NET Aspire NATS client 統合を開始するには、NATS NuGet パッケージ、clientを使用するプロジェクト、つまり、NATSclientを使用するアプリケーションのプロジェクトです。 NATS client 統合では、との対話に使用できる NATS インスタンスが登録されます。
dotnet add package Aspire.NATS.Net
NATS client の追加
Program.cs-consuming プロジェクトの client ファイルで、任意の AddNatsClient で IHostApplicationBuilder 拡張メソッドを呼び出して、依存関係挿入コンテナー経由で使用する INatsConnection
を登録します。 このメソッドは、接続名パラメーターを受け取ります。
builder.AddNatsClient(connectionName: "nats");
ヒント
connectionName
パラメーターは、アプリ ホスト プロジェクトに NATSserver リソースを追加するときに使用する名前と一致する必要があります。 詳細については、「NATSserver 追加する」を参照してください。
その後、依存関係の挿入を使用して INatsConnection
インスタンスを取得できます。 たとえば、サービスから client を取得するには、次のようにします。
public class ExampleService(INatsConnection connection)
{
// Use connection...
}
依存性注入の詳細については、.NET 依存性注入を参照してください。
キー付き NATSclient を追加する
接続名が異なる複数の 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
}
}
}
}
完全な NATSclient 統合 JSON スキーマについては、Aspireと .Net/ConfigurationSchema にあるNATSを参照してください。json.
インライン デリゲートを使用する
Action<NatsClientSettings> configureSettings
デリゲートを渡して、一部またはすべてのオプションをインラインで設定します。たとえば、コードから正常性チェックを無効にします。
builder.AddNatsClient(
"nats",
static settings => settings.DisableHealthChecks = true);
NATS マニフェスト内の .NET Aspire
NATS は、.NET Aspire配置マニフェストの一部ではありません。 NATSの外部で安全な運用 server.NET Aspire を設定することをお勧めします。
Client 統合の診断チェック
既定では、.NET.NET Aspire 統合により、すべてのサービス 正常性チェック が有効になります。 詳細については、.NET.NET Aspire 統合の概要を参照してください。
.NET Aspire NATS 統合では、次の処理が行われます。
-
/health
HTTP エンドポイントと統合されます。このエンドポイントは、アプリがトラフィックを受け入れる準備ができていると見なされるために、登録されているすべての正常性チェックに合格する必要があります。
可観測性とテレメトリ
伐採
.NET Aspire NATS 統合では、次のログ カテゴリが使用されます。
NATS
トレース
.NET Aspire NATS 統合では、次のトレース アクティビティが出力されます。
NATS.Net
関連項目
.NET Aspire