lilydocs
HTTP APIWebSocketConsumer
LILY CONSUMER2 dk okuma

Mesajdan iş akışına.

RabbitMQ mesajlarını DI, typed handler ve yönetilen uygulama yaşam döngüsüyle işleyin.

REHBERE BAŞLARKEN

Lily Consumer, RabbitMQ'dan gelen mesajları Rust handler'larına yönlendiren ve bu uygulamanın yaşam döngüsünü yöneten bileşendir. Siz mesaj sözleşmesini ve iş kurallarını yazarsınız; Lily servisleri kurar, delivery scope'unu açar, mesajı uygun handler'a taşır ve kapanışta sahip olduğu kaynakları süre sınırı içinde uzlaştırır.

Ortak temel: DI ve yaşam döngüsü#

HTTP API ve WebSocket ile aynı DI temeli kullanılır. Injectable ile kaydedilen servisler Singleton, Scoped veya Transient olabilir. Consumer'da Scoped servis bir bağlantıya değil, kabul edilmiş tek delivery'ye aittir. Aynı mesajın yeniden teslimi yeni bir scope oluşturur.

Consumer::run() yalnız bir döngü başlatmaz: configuration, handler keşfi, pipeline kurulumu, queue registration, runtime supervision ve kontrollü kapanış aynı uygulama sahibi altında birleşir. Uygulamanın kendisinin başlattığı bağımsız task'ların ve dış kaynakların sahipliği ayrıca tasarlanır.

Bir mesajın yolu#

Akış
Publisher → RabbitMQ → contract selection → delivery scope
          → middleware → guards → typed extraction → handler
          → reverse middleware exit → scope cleanup → settlement

Handler seçimi (queue, version, content) anahtarıyla yapılır. Örneğin orders.created, 1, json sözleşmesi bir Json<OrderCreated> handler'ına gider. Geçersiz envelope ve desteklenmeyen sözleşmeler scope veya uygulama middleware'i açılmadan reddedilebilir.

Handler Result<(), QueueHandlerError> döndürür. Başarı, retryable hata ve permanent hata framework'ün settlement kararına girdi olur. Handler'a doğrudan ACK/NACK yetkisi verilmez; aynı delivery için birden fazla bileşenin settlement yapması önlenir.

Neler kurabilirsiniz?#

Yetenek Başlangıç noktası
Typed mesaj işleme ve sürümlü handler Mesaj sözleşmeleri
Servis paylaşımı ve delivery scope Bağımlılık enjeksiyonu
Ortak davranış ve uygulama politikası Middleware ve guard
Retry, dead letter ve kapasite Retry ve backpressure
DB, inbox ve outbox Veri entegrasyonları ve transactional inbox
Health, shutdown ve belge üretimi Managed Consumer, tracing, AsyncAPI

Kurulum ve öğrenme sırası#

TOML
lilyrs = { version = "0.1.0", features = ["consumer"] }

Public giriş lilyrs facade'idir. consumer feature'ı uygulama API'sini lilyrs::consumer, queue sözleşmelerini lilyrs::queue altında açar. DI derive ve kayıt altyapısını ayrıca kurmanız gerekmez. Temel kullanım RabbitMQ içindir; farklı bir broker seçen genel transport düğmesi yoktur.

Önce ilk Consumer'ı çalıştırın, ardından ayrı publisher ile bir mesaj gönderin. Sonra lifecycle, DI ve configuration bölümlerini izleyin. Böylece ileri transaction veya işletim ayarlarını, çalışan bir uygulamanın üzerine ekleyebilirsiniz.

Bu sayfanın kaynakları v0.1.0

Anlatım, incelenen framework commit’ine dayanır.

HIZLI BAŞLANGIÇ
Dokümantasyon
Kaynak kod