lilydocs
HTTP APIWebSocketConsumer
Temeller3 dk okuma

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#

Terminal
LILY_CONFIG_PATH=./lily.toml LILY_CONFIG_MODE=development cargo run

LILY_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#

Akış
TOML → LILY__SECTION__FIELD environment overlay
     → exact secret/file references → typed validation → immutable snapshot
Terminal
LILY_CONFIG_PATH=./lily.toml LILY_CONFIG_MODE=production LILY__RABBITMQ__CONSUMER__PASSWORD="$BROKER_PASSWORD" cargo run

Canonical 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
TOML
[lifecycle]
shutdown_timeout_secs = 30

Bu 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.

TOML
lilyrs = { version = "0.1.0", features = ["consumer", "config"] }
Rust
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.

HIZLI BAŞLANGIÇ
Dokümantasyon
Kaynak kod