.NET Aspire RabbitMQ 統合
に含まれるもの:、、、ホスティング統合 および
、、Client 統合
RabbitMQ は信頼性の高いメッセージングおよびストリーミング ブローカーであり、クラウド環境、オンプレミス、ローカル コンピューターに簡単にデプロイできます。
.NET Aspire
RabbitMQ 統合を使用すると、既存の RabbitMQ インスタンスに接続したり、docker.io/library/rabbitmq
を使用して から新しいインスタンスを作成したりできます。
ホスティング統合
RabbitMQ ホスティング統合は、RabbitMQ サーバーを RabbitMQServerResource の種類としてモデル化します。 この型とその API にアクセスするには、📦 プロジェクトに AspireRabbitMQ.Hosting. NuGet パッケージを追加します。
dotnet add package Aspire.Hosting.RabbitMQ
詳細については、「dotnet パッケージ の追加」または「.NET アプリケーションでのパッケージの依存関係の管理」を参照してください。
サーバー リソース RabbitMQ を追加する
アプリ ホスト プロジェクトで、AddRabbitMQ インスタンスの builder
を呼び出して、RabbitMQ サーバー リソースを追加します。
var builder = DistributedApplication.CreateBuilder(args);
var rabbitmq = builder.AddRabbitMQ("messaging");
builder.AddProject<Projects.ExampleProject>()
.WithReference(rabbitmq);
// After adding all resources, run the app...
.NET
.NET Aspire 前の例に示すように、docker.io/library/rabbitmq
イメージを使用してコンテナー イメージをアプリ ホストに追加すると、ローカル コンピューターに新しい RabbitMQ サーバー インスタンスが作成されます。
RabbitMQ サーバーへの参照 (rabbitmq
変数) が ExampleProject
に追加されます。
RabbitMQ サーバー リソースには、username
の "guest"
としてのデフォルトの資格情報が含まれており、それは password
メソッドを使用してランダムに生成された CreateDefaultPasswordParameter に基づいています。
WithReference メソッドは、ExampleProject
という名前の "messaging"
で接続を構成します。 詳細については、「コンテナー リソースのライフサイクルの」を参照してください。
ヒント
既存の RabbitMQ サーバーに接続する場合は、代わりに AddConnectionString を呼び出します。 詳細については、「既存のリソースを参照する」を参照してください。
管理プラグインを使用して RabbitMQ サーバーリソースを追加する。
RabbitMQ サーバー リソースに RabbitMQ を追加するには、WithManagementPlugin メソッドを呼び出します。
var builder = DistributedApplication.CreateBuilder(args);
var rabbitmq = builder.AddRabbitMQ("messaging")
.WithManagementPlugin();
builder.AddProject<Projects.ExampleProject>()
.WithReference(rabbitmq);
// After adding all resources, run the app...
RabbitMQ 管理プラグインは、RabbitMQ サーバーを管理および監視するための HTTP ベースの API を提供します。
.NET
.NET Aspire は、管理プラグインを実行する別のコンテナー イメージ docker.io/library/rabbitmq-management
をアプリ ホストに追加します。
データ ボリューム付きのRabbitMQサーバーリソースを追加する
RabbitMQ サーバー リソースにデータ ボリュームを追加するには、WithDataVolume サーバー リソースで RabbitMQ メソッドを呼び出します。
var builder = DistributedApplication.CreateBuilder(args);
var rabbitmq = builder.AddRabbitMQ("messaging")
.WithDataVolume(isReadOnly: false);
builder.AddProject<Projects.ExampleProject>()
.WithReference(rabbitmq);
// After adding all resources, run the app...
データ ボリュームは、コンテナーのライフサイクル外に RabbitMQ サーバー データを保持するために使用されます。 データ ボリュームは、/var/lib/rabbitmq
サーバー コンテナーの RabbitMQ パスにマウントされ、name
パラメーターが指定されていない場合は、名前がランダムに生成されます。 データボリュームと、それが バインドマウントよりも好まれる理由の詳細については、「Docker ドキュメント: ボリューム」を参照してください。
RabbitMQサーバーリソースをデータバインドマウントで追加する
RabbitMQ サーバー リソースにデータ バインド マウントを追加するには、WithDataBindMount メソッドを呼び出します。
var builder = DistributedApplication.CreateBuilder(args);
var rabbitmq = builder.AddRabbitMQ("messaging")
.WithDataBindMount(
source: @"C:\RabbitMQ\Data",
isReadOnly: false);
builder.AddProject<Projects.ExampleProject>()
.WithReference(rabbitmq);
// After adding all resources, run the app...
大事な
データ バインド マウント、パフォーマンス、移植性、およびセキュリティが向上し、運用環境に適した ボリュームと比較して機能が制限されています。 ただし、バインド マウントを使用すると、ホスト システム上のファイルに直接アクセスして変更できるため、リアルタイムの変更が必要な開発とテストに最適です。
データ バインド マウントは、ホスト マシンのファイルシステムに依存して、コンテナーの再起動時に RabbitMQ サーバー データを保持します。 データ バインド マウントは、C:\RabbitMQ\Data
サーバー コンテナー内のホスト コンピューター上の Windows 上の /RabbitMQ/Data
(または Unix上の RabbitMQ) パスにマウントされます。 データ バインド マウントの詳細については、「Docker ドキュメント: バインド マウント」を参照してください。
パラメーターを指定して RabbitMQ サーバーリソースを追加する
コンテナー イメージで使用されるユーザー名とパスワードを明示的に指定する場合は、これらの資格情報をパラメーターとして指定できます。 次の代替例を考えてみましょう。
var builder = DistributedApplication.CreateBuilder(args);
var username = builder.AddParameter("username", secret: true);
var password = builder.AddParameter("password", secret: true);
var rabbitmq = builder.AddRabbitMQ("messaging", username, password);
builder.AddProject<Projects.ExampleProject>()
.WithReference(rabbitmq);
// After adding all resources, run the app...
パラメーターの指定の詳細については、「外部パラメーターの
ホスティング統合の正常性チェック
RabbitMQ ホスティング統合により、RabbitMQ サーバー リソースの正常性チェックが自動的に追加されます。 正常性チェックでは、RabbitMQ サーバーが実行されていること、およびサーバーへの接続を確立できることを確認します。
ホスティング統合は、📦 AspNetCore.HealthChecks.Rabbitmq NuGet パッケージに依存します。
Client 統合
.NET Aspire RabbitMQ クライアント統合を開始するには、RabbitMQ NuGet パッケージをインストールします。 RabbitMQ クライアント統合は、との対話に使用できる RabbitMQ インスタンスを登録します。
dotnet add package Aspire.RabbitMQ.Client
クライアント RabbitMQ 追加する
クライアントを使用するプロジェクトの Program.cs ファイルで、任意の AddRabbitMQClient で IHostApplicationBuilder 拡張メソッドを呼び出して、依存関係挿入コンテナーを介して使用する IConnection
を登録します。 このメソッドは、接続名パラメーターを受け取ります。
builder.AddRabbitMQClient(connectionName: "messaging");
ヒント
connectionName
パラメーターは、アプリ ホスト プロジェクトに RabbitMQ サーバー リソースを追加するときに使用する名前と一致する必要があります。 詳細については、「RabbitMQ サーバーリソースを追加」を参照してください。
その後、依存関係の挿入を使用して IConnection
インスタンスを取得できます。 たとえば、サービスの例から接続を取得するには、次のようにします。
public class ExampleService(IConnection connection)
{
// Use connection...
}
依存関係の挿入に関する詳細については、.NET 依存関係の挿入を参照してください。
キー付き RabbitMQ クライアントを追加する
接続名が異なる複数の IConnection
インスタンスを登録する場合があります。 キー付き RabbitMQ クライアントを登録するには、AddKeyedRabbitMQClient メソッドを呼び出します。
builder.AddKeyedRabbitMQClient(name: "chat");
builder.AddKeyedRabbitMQClient(name: "queue");
その後、依存関係の挿入を使用して IConnection
インスタンスを取得できます。 たとえば、サービスの例から接続を取得するには、次のようにします。
public class ExampleService(
[FromKeyedServices("chat")] IConnection chatConnection,
[FromKeyedServices("queue")] IConnection queueConnection)
{
// Use connections...
}
キー付きサービスの詳細については、「.NET 依存関係の挿入: キー付きサービスの」を参照してください。
構成
.NET Aspire RabbitMQ 統合には、プロジェクトの要件と規則に基づいて接続を構成するための複数のオプションが用意されています。
接続文字列を使用する
ConnectionStrings
構成セクションの接続文字列を使用する場合は、AddRabbitMQClient メソッドを呼び出すときに接続文字列の名前を指定できます。
builder.AddRabbitMQClient(connectionName: "messaging");
その後、接続文字列は ConnectionStrings
構成セクションから取得されます。
{
"ConnectionStrings": {
"messaging": "amqp://username:password@localhost:5672"
}
}
この接続文字列の書式を設定する方法の詳細については、RabbitMQ URI 仕様のドキュメントを参照してください。
構成プロバイダーを使用する
.NET Aspire
RabbitMQ 統合では、Microsoft.Extensions.Configurationがサポートされます。
RabbitMQClientSettings キーを使用して、構成から Aspire:RabbitMQ:Client
を読み込みます。 次のスニペットは、いくつかのオプションを構成する appsettings.json ファイルの例です。
{
"Aspire": {
"RabbitMQ": {
"Client": {
"ConnectionString": "amqp://username:password@localhost:5672",
"DisableHealthChecks": true,
"DisableTracing": true,
"MaxConnectRetryCount": 2
}
}
}
}
完全な RabbitMQ クライアント統合 JSON スキーマについては、Aspireを参照してください。RabbitMQ.Client/ConfigurationSchema.json.
インライン デリゲートを使用する
また、Action<RabbitMQClientSettings> configureSettings
デリゲートを渡して、一部またはすべてのオプションをインラインで設定できます。たとえば、コードから正常性チェックを無効にすることができます。
builder.AddRabbitMQClient(
"messaging",
static settings => settings.DisableHealthChecks = true);
メソッドの Action<IConnectionFactory> configureConnectionFactory
デリゲート パラメーターを使用して、AddRabbitMQClient
を設定することもできます。 たとえば、接続のクライアント指定の名前を設定するには、次のようにします。
builder.AddRabbitMQClient(
"messaging",
configureConnectionFactory:
static factory => factory.ClientProvidedName = "MyApp");
Client 統合の正常性チェック
既定では、.NET.NET Aspire 統合により、すべてのサービス 正常性チェック が有効になります。 詳細については、.NET.NET Aspire 統合の概要を参照してください。
.NET Aspire RabbitMQ 統合:
-
RabbitMQClientSettings.DisableHealthChecks が
false
されたときに正常性チェックを追加します。これは、RabbitMQ サーバーに接続してチャネルを作成しようとします。 -
/health
HTTP エンドポイントと統合されます。このエンドポイントは、アプリがトラフィックを受け入れる準備ができていると見なされるために、登録されているすべての正常性チェックに合格する必要があります。
可観測性とテレメトリ
伐採
.NET Aspire RabbitMQ 統合では、次のログ カテゴリが使用されます。
RabbitMQ.Client
追跡
.NET Aspire RabbitMQ 統合では、OpenTelemetryを使用して次のトレース アクティビティが出力されます。
Aspire.RabbitMQ.Client
メトリック
現在、.NET AspireRabbitMQ 統合では、既定ではメトリックはサポートされていません。
関連項目
- .NET Aspire で を使用してメッセージを送信する
- RabbitMQ .NET Client ドキュメント
- .NET .NET Aspire 統合
- .NET Aspire GitHub リポジトリの
.NET Aspire