integrasi .NET AspireRabbitMQ
Meliputi: integrasi hosting dan integrasi
Client
RabbitMQ adalah broker olahpesan dan streaming yang andal, yang mudah disebarkan di lingkungan cloud, lokal, dan di komputer lokal Anda. Integrasi .NET AspireRabbitMQ memungkinkan Anda terhubung ke instans RabbitMQ yang ada, atau membuat instans baru dari .NET dengan gambar kontainer docker.io/library/rabbitmq
.
Integrasi hosting
Integrasi hosting RabbitMQ memodelkan server RabbitMQ sebagai jenis RabbitMQServerResource. Untuk mengakses jenis ini dan API-nya, tambahkan paket NuGet 📦Aspire.Hosting.RabbitMQ di proyek host aplikasi .
dotnet add package Aspire.Hosting.RabbitMQ
Untuk informasi selengkapnya, lihat dotnet menambahkan paket atau Mengelola dependensi paket di aplikasi .NET.
Menambahkan sumber daya server RabbitMQ
Di proyek host aplikasi Anda, panggil AddRabbitMQ pada instans builder
untuk menambahkan sumber daya server RabbitMQ:
var builder = DistributedApplication.CreateBuilder(args);
var rabbitmq = builder.AddRabbitMQ("messaging");
builder.AddProject<Projects.ExampleProject>()
.WithReference(rabbitmq);
// After adding all resources, run the app...
Saat .NET.NET Aspire menambahkan gambar kontainer ke host aplikasi, seperti yang ditunjukkan dalam contoh sebelumnya dengan gambar docker.io/library/rabbitmq
, gambar tersebut membuat instans server RabbitMQ baru di komputer lokal Anda. Referensi ke server RabbitMQ Anda (variabel rabbitmq
) ditambahkan ke ExampleProject
. Sumber daya server RabbitMQ mencakup kredensial default dengan username
"guest"
dan password
yang dihasilkan secara acak menggunakan metode CreateDefaultPasswordParameter.
Metode WithReference mengonfigurasi koneksi di ExampleProject
bernama "messaging"
. Untuk informasi selengkapnya, lihat siklus hidup sumber daya Kontainer.
Tips
Jika Anda lebih suka menyambungkan ke server RabbitMQ yang sudah ada, panggil AddConnectionString sebagai gantinya. Untuk informasi selengkapnya, lihat Referensi sumber daya yang ada .
Menambahkan sumber daya server RabbitMQ dengan plugin manajemen
Untuk menambahkan plugin manajemen RabbitMQ ke sumber daya server RabbitMQ, panggil metode 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...
Plugin manajemen RabbitMQ menyediakan API berbasis HTTP untuk manajemen dan pemantauan server RabbitMQ Anda.
.NET
.NET Aspire menambahkan gambar kontainer lain docker.io/library/rabbitmq-management
ke host aplikasi yang menjalankan plugin manajemen.
Tambahkan sumber daya server RabbitMQ dengan volume data
Untuk menambahkan volume data ke sumber daya server RabbitMQ, panggil metode WithDataVolume pada sumber daya server 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...
Volume data digunakan untuk mempertahankan data server RabbitMQ di luar siklus hidup kontainernya. Volume data dipasang di jalur /var/lib/rabbitmq
di kontainer server RabbitMQ dan ketika parameter name
tidak disediakan, nama dihasilkan secara acak. Untuk informasi lebih lanjut tentang volume data dan alasan mengapa mereka lebih disukai daripada mount bind, lihat dokumen Docker: Volumes.
Menambahkan sumber daya server RabbitMQ dengan pemasangan ikatan data
Untuk menambahkan pemasangan ikatan data ke sumber daya server RabbitMQ, panggil metode 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...
Penting
Pemasangan ikat data memiliki fungsionalitas terbatas dibandingkan dengan volume , yang menawarkan performa, portabilitas, dan keamanan yang lebih baik, membuatnya lebih cocok untuk lingkungan produksi. Namun, bind mounts memungkinkan akses langsung dan modifikasi file pada sistem host, ideal untuk pengembangan dan pengujian ketika perubahan waktu nyata diperlukan.
Pemasangan bind data mengandalkan sistem file komputer host untuk mempertahankan data server RabbitMQ selama mulai ulang kontainer. Pemasangan ikatan data dipasang di C:\RabbitMQ\Data
pada jalur Windows (atau /RabbitMQ/Data
di Unix) pada komputer host di kontainer server RabbitMQ. Untuk informasi selengkapnya tentang pemasangan ikatan data, lihat dokumen Docker: Pemasangan ikatan.
Menambahkan sumber daya server RabbitMQ dengan parameter
Saat Anda ingin secara eksplisit memberikan nama pengguna dan kata sandi yang digunakan oleh gambar kontainer, Anda dapat memberikan kredensial ini sebagai parameter. Pertimbangkan contoh alternatif berikut:
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...
Untuk informasi selengkapnya tentang menyediakan parameter, lihat Parameter eksternal.
Memfasilitasi pemeriksaan kesehatan integrasi
Integrasi hosting RabbitMQ secara otomatis menambahkan pemeriksaan kesehatan untuk sumber daya server RabbitMQ. Pemeriksaan kesehatan memverifikasi bahwa server RabbitMQ sedang berjalan dan bahwa koneksi dapat dibuat untuknya.
Integrasi hosting bergantung pada paket 📦 AspNetCore.HealthChecks.Rabbitmq NuGet.
Client integrasi
Untuk memulai integrasi klien .NET AspireRabbitMQ, instal paket NuGet 📦Aspire.RabbitMQ.Client di proyek yang menggunakan klien, yaitu proyek untuk aplikasi yang menggunakan klien RabbitMQ. Integrasi klien RabbitMQ mendaftarkan instans IConnection yang dapat Anda gunakan untuk berinteraksi dengan RabbitMQ.
dotnet add package Aspire.RabbitMQ.Client
Penting
Paket NuGet Aspire.RabbitMQ.Client
tergantung pada paket NuGet RabbitMQ.Client
. Dengan rilis RabbitMQ.Client
versi 7.0.0 , perubahan pemecahan biner diperkenalkan. Untuk mengatasi hal ini, paket integrasi klien baru, Aspire.RabbitMQ.Client.v7
, dibuat. Paket Aspire.RabbitMQ.Client
asli terus mereferensikan RabbitMQ.Client
versi 6.8.1, memastikan kompatibilitas dengan versi integrasi klien RabbitMQ sebelumnya. Paket Aspire.RabbitMQ.Client.v7
baru mereferensikan RabbitMQ.Client
versi 7.0.0. Dalam versi .NET.NET Aspiremendatang, Aspire.RabbitMQ.Client
akan diperbarui ke 7.x
versi dan paket Aspire.RabbitMQ.Client.v7
tidak akan digunakan lagi. Untuk informasi selengkapnya, lihat Migrasi ke RabbitMQ.NETClient 7.x.
Menambahkan klien RabbitMQ
Dalam file Program.cs dari proyek yang menggunakan klien Anda, panggil metode ekstensi AddRabbitMQClient pada IHostApplicationBuilder apa pun untuk mendaftarkan IConnection
agar dapat digunakan melalui wadah injeksi dependensi. Metode ini mengambil parameter nama koneksi.
builder.AddRabbitMQClient(connectionName: "messaging");
Tips
Parameter connectionName
harus cocok dengan nama yang digunakan saat menambahkan sumber daya server RabbitMQ di proyek host aplikasi. Untuk informasi selengkapnya, lihat Menambahkan sumber daya server RabbitMQ.
Anda kemudian dapat mengakses instans IConnection
menggunakan injeksi dependensi. Misalnya, untuk mengambil koneksi dari layanan contoh:
public class ExampleService(IConnection connection)
{
// Use connection...
}
Untuk informasi selengkapnya tentang injeksi dependensi, lihat .NET injeksi dependensi.
Tambahkan klien RabbitMQ yang terkode.
Mungkin ada situasi di mana Anda ingin mendaftarkan beberapa instans IConnection
dengan nama koneksi yang berbeda. Untuk mendaftarkan klien yang dikunci RabbitMQ, panggil metode AddKeyedRabbitMQClient.
builder.AddKeyedRabbitMQClient(name: "chat");
builder.AddKeyedRabbitMQClient(name: "queue");
Kemudian Anda dapat mengambil instance IConnection
menggunakan penyuntikan dependensi. Misalnya, untuk mengambil koneksi dari layanan contoh:
public class ExampleService(
[FromKeyedServices("chat")] IConnection chatConnection,
[FromKeyedServices("queue")] IConnection queueConnection)
{
// Use connections...
}
Untuk informasi selengkapnya tentang layanan bertanda kunci, lihat di .NET injeksi ketergantungan: Layanan bertanda kunci.
Konfigurasi
Integrasi .NET AspireRabbitMQ menyediakan beberapa opsi untuk mengonfigurasi koneksi berdasarkan persyaratan dan konvensi proyek Anda.
Menggunakan string koneksi
Saat menggunakan string koneksi dari bagian konfigurasi ConnectionStrings
, Anda dapat memberikan nama string koneksi saat memanggil metode AddRabbitMQClient:
builder.AddRabbitMQClient(connectionName: "messaging");
Kemudian string koneksi diambil dari bagian konfigurasi ConnectionStrings
:
{
"ConnectionStrings": {
"messaging": "amqp://username:password@localhost:5672"
}
}
Untuk informasi selengkapnya tentang cara memformat string koneksi ini, lihat dokumen spesifikasi URI RabbitMQ.
Menggunakan penyedia konfigurasi
Integrasi .NET AspireRabbitMQ mendukung Microsoft.Extensions.Configuration. Ini memuat RabbitMQClientSettings dari konfigurasi dengan menggunakan kunci Aspire:RabbitMQ:Client
. Cuplikan berikut adalah contoh file appsettings.json yang mengonfigurasi beberapa opsi:
{
"Aspire": {
"RabbitMQ": {
"Client": {
"ConnectionString": "amqp://username:password@localhost:5672",
"DisableHealthChecks": true,
"DisableTracing": true,
"MaxConnectRetryCount": 2
}
}
}
}
Untuk skema RabbitMQ integrasi klien JSON lengkap, lihat Aspire.RabbitMQ.Client/ConfigurationSchema.json.
Menggunakan delegasi sebaris
Anda juga dapat mengoper deleget Action<RabbitMQClientSettings> configureSettings
untuk mengonfigurasi beberapa atau semua opsi secara langsung, misalnya untuk mematikan pemeriksaan kesehatan dari dalam kode.
builder.AddRabbitMQClient(
"messaging",
static settings => settings.DisableHealthChecks = true);
Anda juga dapat menyiapkan IConnectionFactory menggunakan parameter delegasi Action<IConnectionFactory> configureConnectionFactory
dari metode AddRabbitMQClient
. Misalnya untuk mengatur nama yang disediakan klien untuk koneksi:
builder.AddRabbitMQClient(
"messaging",
configureConnectionFactory:
static factory => factory.ClientProvidedName = "MyApp");
Client pemeriksaan kesehatan integrasi
Secara default, integrasi .NET.NET Aspire memungkinkan pemeriksaan kesehatan untuk semua layanan. Untuk informasi selengkapnya, lihat gambaran umum integrasi .NET.NET Aspire.
Integrasi .NET AspireRabbitMQ:
- Menambahkan pengecekan kesehatan ketika RabbitMQClientSettings.DisableHealthChecks berada di
false
, yang berupaya menghubungkan dan membuat saluran di server RabbitMQ. - Terintegrasi dengan titik akhir HTTP
/health
, yang menentukan bahwa semua cek kesehatan yang terdaftar harus berhasil agar aplikasi dianggap siap menerima lalu lintas.
Pengamatan dan telemetri
.NET
.NET Aspire integrasi secara otomatis menyiapkan konfigurasi Pengelogan, Pelacakan, dan Metrik, yang terkadang dikenal sebagai pilar pengamatan. Untuk informasi selengkapnya tentang pengamatan integrasi dan telemetri, lihat gambaran umum integrasi .NET.NET Aspire. Bergantung pada layanan pendukung, beberapa integrasi mungkin hanya mendukung beberapa fitur ini. Misalnya, beberapa integrasi mendukung pengelogan dan pelacakan, tetapi bukan metrik. Fitur telemetri juga dapat dinonaktifkan menggunakan teknik yang disajikan di bagian Konfigurasi
Pencatatan
Integrasi .NET AspireRabbitMQ menggunakan kategori log berikut:
RabbitMQ.Client
Menelusuri
Integrasi .NET AspireRabbitMQ memancarkan aktivitas pelacakan berikut menggunakan OpenTelemetry:
Aspire.RabbitMQ.Client
Metrik
Integrasi .NET AspireRabbitMQ saat ini tidak mendukung metrik secara default.
Lihat juga
.NET Aspire