Yapılandırma
TOML, environment overlay ve typed configuration yükleme sırasını öğrenin.
Consumer configuration'ı broker bağlantısını, fiziksel kuyruk politikasını ve application kapanışını tanımlar. Handler kodu kabul edilen mesaj sözleşmesini söyler; configuration hangi kayıtların hangi kaynaklarla çalışacağını seçer.
Dosya ve çalışma modunu birlikte seçin#
LILY_CONFIG_PATH=./lily.toml LILY_CONFIG_MODE=development cargo runLILY_CONFIG_PATH ve LILY_CONFIG_MODE birlikte kullanılır. Modlar development, test ve production değerleridir. İkisi de verilmezse uyumluluk varsayılanı çalışma dizininde lily.toml ve development modudur; üst dizinlerde dosya araması yapılmaz. Yalnız bir bootstrap değişkenini vermek geçersizdir.
Production modunda eksik dosya fail-closed startup hatasıdır. Development/test modunda eksik dosyaya izin verilmesi Consumer'ın RabbitMQ bağlantısı ve topology gereksinimini kaldırmaz. Çalışan başlangıç config'i için ilk uygulamadaki tam dosyayı kullanın.
Yükleme önceliğini bilin#
TOML → LILY__SECTION__FIELD environment overlay
→ exact secret/file references → typed validation → immutable snapshotLILY_CONFIG_PATH=./lily.toml LILY_CONFIG_MODE=production LILY__RABBITMQ__CONSUMER__PASSWORD="$BROKER_PASSWORD" cargo runCanonical environment overlay için çift alt çizgi bölüm sınırıdır. Örnekte yalnız consumer password değiştirilir; dosyadaki diğer alanlar korunur. Configuration isimleri ve türleri doğrulanır; bilinmeyen typed alanlara dayanarak davranış eklenmez. Uygulamanızın kendi değerleri [custom] altında tutulabilir.
Yükleme başarılı olduğunda immutable snapshot yayımlanır. Sonradan dosyayı veya environment'ı değiştirmek çalışan Consumer'a hot reload yapmaz. Yeni değerlerin alınması için yeni application startup'ı planlayın; secret yönetimi de aynı snapshot sınırını kullanır.
Connection ile topology görevini ayırın#
| Bölüm | Görev |
|---|---|
[rabbitmq.consumer] |
Consumer broker endpoint'i, credential, TLS ve connection pool |
[[rabbitmq.topology.queues]] |
Physical queue, exchange, routing, concurrency ve retry politikası |
[rabbitmq.topology.queues.retention] |
Main, retry ve DLQ için zorunlu mesaj/byte sınırları |
[lifecycle] |
Application kapanış bütçesi |
[queue_client] |
Ayrı publisher integration'ın connection profili |
[lifecycle]
shutdown_timeout_secs = 30Bu bölümü mevcut lily.toml dosyasına ekleyebilirsiniz; 30 saniye varsayılandır. Süre her aşamaya ayrı eklenmez, toplam application root bütçesidir. Connection veya topology ayarlarını handler macro'suna taşımayın; macro sözleşmesi queue/version/content seçimini yapar.
Programatik configuration seçimi#
Consumer builder'ında genel .config_path() yoktur. Programatik seçenekler için facade'e config ekleyip ConfigService'i caller-owned container oluşturulurken seed edin. Aşağıdaki fonksiyon Consumer'ı çalıştırmaz; üst owner'ın yöneteceği builder ve container'ı birlikte döndürür.
lilyrs = { version = "0.1.0", features = ["consumer", "config"] }use std::sync::Arc;
use lilyrs::{
config::ConfigService,
consumer::{ApplicationContainer, Consumer, ConsumerBuilder},
};
async fn configured_consumer()
-> Result<(ConsumerBuilder, Arc<ApplicationContainer>), Box<dyn std::error::Error>>
{
let container = Arc::new(ApplicationContainer::builder()
.seed_singleton(ConfigService::production("./lily.toml"))
.build().await?);
let builder = Consumer::builder().container(Arc::clone(&container));
Ok((builder, container))
}Container build Singleton initialization yapabilir; onu yalnız bir config taşıyıcısı gibi düşünmeyin. Caller-owned container'ın kapanışını managed lifecycle sonucuyla uzlaştırın. ConfigService'i resolve edip load().await? ile snapshot alabilirsiniz; tekrar yükleme aynı immutable configuration'ı döndürür.
Tanılama ve referans#
Configuration'ı gözlemek için snapshot'ın redacted_values() görünümünü tercih edin; typed config'in içinde çözülmüş secret'lar bulunabilir. Alanların default ve limitleri configuration referansı, broker'a ait seçimler topology ve bağlantı güvenliği altında açıklanır.
Bu sayfanın kaynakları v0.1.0
Anlatım, incelenen framework commit’ine dayanır.