.NET Aspire RabbitMQ entegrasyonu
Içerir: Barındırma tümleştirmesi ve
Client tümleştirmesi
RabbitMQ bulut ortamlarında, şirket içinde ve yerel makinenizde kolayca dağıtabileceğiniz güvenilir bir mesajlaşma ve akış aracısıdır.
.NET Aspire
RabbitMQ tümleştirmesi, mevcut RabbitMQ örneklerine bağlanmanıza veya .NETdocker.io/library/rabbitmq
kapsayıcı görüntüsüile yeni örnekler oluşturmanıza olanak tanır.
Barındırma entegrasyonu
RabbitMQ barındırma tümleştirmesi, bir RabbitMQ sunucusunu RabbitMQServerResource türü olarak modeller. Bu tür ve API'lerine erişmek için 📦Aspire.Hosting.RabbitMQ NuGet paketini uygulama barındırıcısı projesine ekleyin.
dotnet add package Aspire.Hosting.RabbitMQ
Daha fazla bilgi için bkz. dotnet add package veya .NET uygulamalarında paket bağımlılıklarını yönetme.
RabbitMQ sunucu kaynağı ekleme
Uygulama ana bilgisayar projenizde, AddRabbitMQ örneğinde builder
çağrısı yaparak bir RabbitMQ sunucu kaynağı ekleyin:
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, önceki örnekte docker.io/library/rabbitmq
görüntüde gösterildiği gibi uygulama konağına bir kapsayıcı görüntüsü eklediğinde, yerel makinenizde yeni bir RabbitMQ sunucu örneği oluşturur.
RabbitMQ sunucunuza (rabbitmq
değişkeni) bir referans ExampleProject
'ye eklenir.
RabbitMQ sunucu kaynağı, username
olarak "guest"
ve CreateDefaultPasswordParameter yöntemi kullanılarak rastgele oluşturulan password
içeren varsayılan kimlik bilgilerini içerir.
WithReference yöntemi, ExampleProject
'de "messaging"
adlı bir bağlantıyı yapılandırıyor. Daha fazla bilgi için bkz. Kapsayıcı kaynak yaşam döngüsü.
Bahşiş
Mevcut bir RabbitMQ sunucusuna bağlanmak isterseniz bunun yerine AddConnectionString'ı arayın. Daha fazla bilgi için bkz. Var olan kaynaklara başvurma.
Yönetim eklentisiyle RabbitMQ sunucu kaynağı ekleme
RabbitMQ sunucusu kaynağına eklemek için RabbitMQ yöntemini çağırın:
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 yönetim eklentisi, RabbitMQ sunucunuzun yönetimi ve izlenmesi için HTTP tabanlı bir API sağlar.
.NET
.NET Aspire, yönetim eklentisini çalıştıran uygulama konağına başka bir kapsayıcı görüntüsü docker.io/library/rabbitmq-management
ekler.
RabbitMQ sunucu kaynağını, veri birimiyle ekle.
RabbitMQ sunucu kaynağına veri birimi eklemek için WithDataVolume sunucu kaynağında RabbitMQ yöntemini çağırın:
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...
Veri hacmi, RabbitMQ sunucu verilerini kapsayıcısının yaşam döngüsü dışında kalıcı hale getirmek için kullanılır. Veri birimi, /var/lib/rabbitmq
sunucu kapsayıcısında RabbitMQ yoluna bağlanır ve name
parametresi sağlanmazsa ad rastgele oluşturulur. Veri hacimleri ve bağlamaların neden tercih edildiğine dair ayrıntılar hakkında daha fazla bilgi için Docker belgelerine bakın: Birimler.
Veri bağlama ile RabbitMQ sunucu kaynağı ekleme
RabbitMQ sunucu kaynağına veri bağlaması eklemek için WithDataBindMount yöntemini çağırın:
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...
Önemli
Veri
Veri bağlamaları, kapsayıcı yeniden başlatmaları arasında RabbitMQ sunucusunun verilerini kalıcı hale getirmek için konak makinenin dosya sistemini kullanır. Veri bağlama noktası, RabbitMQ sunucu kapsayıcısında, ana makinedeki Windows üzerindeki C:\RabbitMQ\Data
yoluna monte edilmiş (veya Unix üzerindeki /RabbitMQ/Data
yoluna) durumdadır. Veri bağlama noktaları hakkında daha fazla bilgi için bkz. Docker belgeler: Bağlama noktaları.
Parametrelerle RabbitMQ sunucu kaynağı ekleme
Kapsayıcı görüntüsü tarafından kullanılan kullanıcı adını ve parolayı açıkça sağlamak istediğinizde, bu kimlik bilgilerini parametre olarak sağlayabilirsiniz. Aşağıdaki alternatif örneği göz önünde bulundurun:
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...
Parametreleri sağlama hakkında daha fazla bilgi için bkz. Dış parametreler.
Barındırma entegrasyonunun sağlık denetimleri
RabbitMQ barındırma tümleştirmesi, RabbitMQ sunucu kaynağı için otomatik olarak bir sistem durumu denetimi ekler. Sistem durumu denetimi, RabbitMQ sunucusunun çalıştığını ve bu sunucuyla bağlantı kurulabileceğini doğrular.
Barındırma tümleştirmesi, 📦 AspNetCore.HealthChecks.Rabbitmq NuGet paketine dayanır.
Client tümleştirme
.NET Aspire RabbitMQ istemci tümleştirmesini kullanmaya başlamak için 📦Aspireyükleyin ve ardındanRabbitMQ.Client NuGet paketini, istemciyi kullanan projede, yani RabbitMQ istemcisini kullanan uygulamaya ait projede yükleyin. RabbitMQ istemci tümleştirmesi, ile etkileşim kurmak için kullanabileceğiniz bir RabbitMQ örneği kaydeder.
dotnet add package Aspire.RabbitMQ.Client
Önemli
Aspire.RabbitMQ.Client
NuGet paketi, RabbitMQ.Client
NuGet paketine bağlıdır.
RabbitMQ.Client
7.0.0 sürümü ile birlikte, ikili uyumu bozan bir değişiklik tanıtıldı. Bu sorunu çözmek için Aspire.RabbitMQ.Client.v7
yeni bir istemci tümleştirme paketi oluşturuldu. Özgün Aspire.RabbitMQ.Client
paketi, RabbitMQ istemci tümleştirmesinin önceki sürümleriyle uyumluluğu sağlayarak RabbitMQ.Client
sürüm 6.8.1'e başvurmaya devam eder. Yeni Aspire.RabbitMQ.Client.v7
paketi, RabbitMQ.Client
sürüm 7.0.0'a başvurur. gelecekteki bir .NET.NET Aspiresürümünde Aspire.RabbitMQ.Client
sürüm 7.x
güncelleştirilecek ve Aspire.RabbitMQ.Client.v7
paketi kullanım dışı bırakılacaktır. Daha fazla bilgi için RabbitMQ.NETClient 7.x'ye geçiş bölümüne bakın.
RabbitMQ istemcisi ekle
İstemci kullanan projenizin Program.cs dosyasında, bağımlılık enjeksiyonu kapsayıcısı aracılığıyla kullanılmak üzere bir IConnection
kaydetmek için herhangi bir IHostApplicationBuilder üzerinde AddRabbitMQClient uzantı metodunu çağırın. yöntemi bir bağlantı adı parametresi alır.
builder.AddRabbitMQClient(connectionName: "messaging");
Bahşiş
connectionName
parametresi, uygulama ana bilgisayar projesine RabbitMQ sunucu kaynağını eklerken kullanılan adla eşleşmelidir. Daha fazla bilgi için bkz. RabbitMQ sunucu kaynağı ekleme.
Daha sonra bağımlılık ekleme kullanarak IConnection
örneğini alabilirsiniz. Örneğin, bağlantıyı örnek bir hizmetten almak için:
public class ExampleService(IConnection connection)
{
// Use connection...
}
Bağımlılık ekleme hakkında daha fazla bilgi için bkz. .NET bağımlılık ekleme.
Anahtarlı RabbitMQ istemcisi ekleme
Farklı bağlantı adlarına sahip birden çok IConnection
örneğini kaydetmek istediğiniz durumlar olabilir. Anahtarlı RabbitMQ istemcilerini kaydetmek için AddKeyedRabbitMQClient yöntemini çağırın:
builder.AddKeyedRabbitMQClient(name: "chat");
builder.AddKeyedRabbitMQClient(name: "queue");
Daha sonra bağımlılık ekleme kullanarak IConnection
örneklerini alabilirsiniz. Örneğin, bağlantıyı örnek bir hizmetten almak için:
public class ExampleService(
[FromKeyedServices("chat")] IConnection chatConnection,
[FromKeyedServices("queue")] IConnection queueConnection)
{
// Use connections...
}
Anahtarlı hizmetler hakkında daha fazla bilgi için bkz. .NET bağımlılık ekleme: Anahtarlı hizmetler.
Konfigürasyon
.NET Aspire RabbitMQ tümleştirmesi, projenizin gereksinimlerine ve kurallarına göre bağlantıyı yapılandırmak için birden çok seçenek sağlar.
Bağlantı dizesi kullanma
ConnectionStrings
yapılandırma bölümünden bir bağlantı dizesi kullanırken, AddRabbitMQClient yöntemini çağırırken bağlantı dizesinin adını sağlayabilirsiniz:
builder.AddRabbitMQClient(connectionName: "messaging");
Ardından bağlantı dizesi ConnectionStrings
yapılandırma bölümünden alınır:
{
"ConnectionStrings": {
"messaging": "amqp://username:password@localhost:5672"
}
}
Bu bağlantı dizesini biçimlendirme hakkında daha fazla bilgi için
Yapılandırma sağlayıcılarını kullanma
.NET Aspire
RabbitMQ tümleştirmesi, Microsoft.Extensions.Configuration'yi destekler.
RabbitMQClientSettings anahtarını kullanarak yapılandırmadan Aspire:RabbitMQ:Client
yükleme işlemi gerçekleştirir. Aşağıdaki kod parçacığı, bazı seçenekleri yapılandıran bir appsettings.json dosyası örneğidir:
{
"Aspire": {
"RabbitMQ": {
"Client": {
"ConnectionString": "amqp://username:password@localhost:5672",
"DisableHealthChecks": true,
"DisableTracing": true,
"MaxConnectRetryCount": 2
}
}
}
}
Tam RabbitMQ istemci tümleştirme JSON şeması için bkz. Aspire.RabbitMQ.Client/ConfigurationSchema.json.
Satır içi temsilcileri kullanın
Ayrıca, bazı veya tüm seçenekleri satır içi olarak ayarlamak için Action<RabbitMQClientSettings> configureSettings
delegatını geçirebilirsiniz; örneğin, koddan sağlık denetimlerini devre dışı bırakmak için:
builder.AddRabbitMQClient(
"messaging",
static settings => settings.DisableHealthChecks = true);
AddRabbitMQClient
yönteminin Action<IConnectionFactory> configureConnectionFactory
temsilci parametresini kullanarak IConnectionFactory'yi de ayarlayabilirsiniz. Örneğin, bağlantılar için istemci tarafından sağlanan adı ayarlamak için:
builder.AddRabbitMQClient(
"messaging",
configureConnectionFactory:
static factory => factory.ClientProvidedName = "MyApp");
Client entegrasyon sağlık kontrolleri
.NET .NET Aspire tümleştirmeleri, varsayılan olarak, tüm hizmetler için sağlık denetimlerini etkinleştirir. Daha fazla bilgi için bkz. .NET.NET Aspire tümleştirmelere genel bakış.
.NET Aspire RabbitMQ tümleştirmesi:
-
RabbitMQClientSettings.DisableHealthChecks
false
olduğunda sağlık denetimini ekler, bu da RabbitMQ sunucusuna bağlanmaya ve bir kanal oluşturmaya çalışır. - Uygulamanın trafiği kabul etmeye hazır olarak kabul edilmesi için tüm kayıtlı sistem durumu denetimlerinin geçmesi gerektiğini belirten
/health
HTTP uç noktasıyla tümleşir.
Gözlemlenebilirlik ve telemetri
.NET
.NET Aspire tümleştirmeleri, Loglama, İzleme ve Metrik yapılandırmalarını, bazen gözlemlenebilirlik sütunları olarak bilinen şekliyle otomatik olarak ayarlar. Tümleştirme gözlemlenebilirliği ve telemetri hakkında daha fazla bilgi için bkz.
Kayıt tutma
.NET Aspire RabbitMQ tümleştirmesi aşağıdaki günlük kategorilerini kullanır:
RabbitMQ.Client
Izleme
.NET Aspire RabbitMQ tümleştirmesi, OpenTelemetry kullanarak aşağıdaki izleme etkinliklerini gerçekleştirir:
Aspire.RabbitMQ.Client
Ölçüm
.NET Aspire RabbitMQ tümleştirmesi şu anda ölçümleri varsayılan olarak desteklememektedir.
Ayrıca bkz.
- RabbitMQ'da .NET Aspire ile ileti gönderme
- RabbitMQ .NET Client dokümanlar
- .NET .NET Aspire tümleştirmeleri
- .NET Aspire GitHub depo
.NET Aspire