lilydocs
HTTP APIWebSocketConsumer
İşletim3 dk okuma

Sağlık ve çalışma durumu

Liveness, readiness, recovery, delivery sayaçları ve shutdown kanıtını doğru sınırlarla yayımlayın.

ManagedConsumer::snapshot() bir Consumer runtime’ının immutable, Serialize edilebilir operational görünümüdür. Tracing’in açık olmasını gerektirmez. HTTP /health veya /ready endpoint’i otomatik eklenmez; uygulama snapshot’ı kendi health veya orchestration adaptöründe kullanır.

Aynı snapshot içinden karar verin#

Rust
use lilyrs::consumer::ManagedConsumer;

fn health(consumer: &ManagedConsumer) -> (bool, bool) {
    let snapshot = consumer.snapshot();
    println!("lifecycle={:?}, ready_queues={}, handlers={}",
        snapshot.lifecycle, snapshot.ready_queues, snapshot.registered_handlers);
    (snapshot.live, snapshot.ready)
}

Bu helper liveness ve readiness kararlarını aynı örnekten alır. live, process’in yaşam döngüsü görüşüdür; broker recovery tek başına process’i ölü saymaz. ready, gerekli queue’ların, admission’ın, shutdown state’in ve etkin transactional outbox relay’in hazır olmasını ister.

Durumları doğru yorumlayın#

Alan Anlam
lifecycle Starting, Ready, Recovering, Draining, Stopped, Failed
live Terminal Stopped/Failed dışında canlılık görüşü
ready Şimdiki aggregate traffic/admission hazırlığı
broker, topology Aggregate bağlantı ve kabul edilmiş topology durumu
admission Closed, Open, PartiallyOpen veya Draining
registered_queues, ready_queues Fiziksel queue subscription sayıları
registered_handlers Version/content handler sayısı
last_failure_code Son stable operational failure’ın tarihsel kanıtı

Bir queue recover olurken diğerleri delivery almaya devam edebilir; admission PartiallyOpen iken aggregate ready false olabilir. Recovery başarıyla bitse bile last_failure_code saklanır. Bu alanın dolu olması güncel unhealthy kararı değildir; current admission otoritesi ready alanıdır.

Sayaç ile audit kaydını ayırın#

deliveries içinde handler success/failure/panic, confirmed retry/dead letter, original ACK, NACK/requeue, unresolved ve in-flight gibi bounded aggregate sayaçlar bulunur. Bunlar tracing sampling’den bağımsızdır. Handler success ile ACK success farklı sayaçlar olarak korunur; birini diğerinin yerine kullanmayın.

Snapshot body, event ID, routing key, broker endpoint veya credential içermez. Lock-free sayaçlar best-effort point-in-time alınır; transactionally consistent muhasebe barrier’ı veya tam exactly-once audit defteri değildir. Bu yüzden tek bir snapshot’tan bütün sayaçların atomik olarak eşleşmesini beklemeyin.

Transaction ve shutdown alanları#

transactional_inbox ve transactional_outbox alanları yalnız ilgili transactional backend feature’ları derlendiğinde bulunur. Payload, event, handler veya database-cell kimlikleri yerine bounded aggregate kanıt taşırlar. Relay readiness aggregate ready kararına katılır.

shutdown.requested bir isteği, shutdown.completed gerçek runtime join’ini gösterir. Başarı için optional report’un completion, dependency ve drain/close kanıtlarına bakın. Shutdown rehberi Failed, Incomplete ve is_success() farkını açıklar; missing report başarılı cleanup değildir.

Olay düzeyinde diagnostic gerektiğinde#

Ayrı QueueService::delivery_terminal_observations() API’si en çok 4096 bounded settlement observation tutabilir. Body yoktur fakat event ID bulunabilir; aggregate snapshot’ın event-ID-free sözleşmesini buna genellemeyin. Store veya kilit yoğunluğunda atlanan kayıtlar dropped sayacında görünür.

Bu yüzeyi erişim kontrollü diagnostics için değerlendirin; genel health cevabına otomatik eklemeyin. Best-effort geçmiş durable audit veya sonsuz replay kaydı değildir. Consumer container’ını handle içinden çıkartan public API varsaymak yerine, ihtiyacınız varsa paylaşılan DI owner’ınızdan QueueService çözün.

Bu sayfanın kaynakları v0.1.0

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

HIZLI BAŞLANGIÇ
Dokümantasyon
Kaynak kod