Kademeli kapatma, ApsaraMQ for RocketMQ'nin sunucu tarafındaki işlemler sırasında mesaj kaybını ve istemci hatalarını önleyen yerleşik bir özelliğidir. Sunucuda sürüm yayınlama, yeniden başlatma veya bakım çalışmaları gerçekleştirildiğinde ApsaraMQ for RocketMQ koruma mekanizmalarını devreye alır; bu sayede istemcilerin bağlantıları ani şekilde kesilmez ve iş sürekliliği sağlanır.
Koruma mekanizmaları
Sunucu tarafında yazma işlemlerinin askıya alınması
Bir depolama düğümü yeniden başlatılmadan önce sunucu, söz konusu düğüme yönelik yazma işlemlerini geçici olarak askıya alır. Düğüme yeni mesaj yazımı kalmadığında yeniden başlatma işlemi ilerler. Bu yaklaşım, istemciler tarafından daha önce gönderilen tüm mesajların başarıyla depolanmasını garanti eder.
GOAWAY ile bağlantı tahliyesi
ApsaraMQ for RocketMQ sunucusu, HTTP/2 protokolünde tanımlanan GOAWAY çerçevesini kullanarak bağlantıları kademeli olarak kapatır veya bağlantıların kapanmak üzere olduğunu istemcilere bildirir. Bu mekanizma, sunucu ile istemciler arasındaki bağlantı sonlandırma sürecini koordine eder; devam eden isteklerin kesintiye uğramasını engeller ve sistem kararlılığını korur.
Etkiler
Üreticiler — Tüm mesaj gönderme istekleri başarıyla işlenir. Kademeli kapatma sürecinde gönderim hatası oluşmaz.
Tüketiciler — Mesajların büyük çoğunluğu başarıyla tüketilir. Nadir durumlarda, yeniden başlatılan depolama düğümünde biriken az sayıda mesaj, geçiş sırasında tüketici ofset taahhütlerinin başarısız olması nedeniyle yeniden teslim edilebilir.
SDK sürüm gereksinimleri
Kademeli kapatma özelliğini kullanabilmeniz için istemci SDK'nızın aşağıdaki minimum sürüm gereksinimlerini karşılaması gerekir:
SDK for JavaSDK for JavaSDK for GoSDK for PythonSDK for C++SDK for C#
| Dil | Minimum sürüm | Referans |
| Java (gRPC protokolü) | 5.0.7 | SDK for Java |
| Java (Remoting protokolü) | 5.3.1 | SDK for Java |
| Go | 5.1.0-rc.1 | SDK for Go |
| Python | 5.0.4 | SDK for Python |
| C++ | 5.0.2 | SDK for C++ |
| C# | 5.1.0 | SDK for C# |
| Node.js | 1.0.1 | SDK for Node.js |
Kullanım notları
İstemci tarafında yapılandırma gerekmez — Kademeli kapatma sunucu tarafında çalışan bir özelliktir. Yalnızca istemci SDK'nızı desteklenen bir sürüme yükseltmeniz yeterlidir.
Tüketicileri idempotent olacak şekilde tasarlayın — Kısa geçiş döneminde tüketici ofset taahhütleri başarısız olabilir; bu durum az sayıda mesajın yeniden teslim edilmesine yol açabilir. Tüketici mantığınızın aynı mesajı birden fazla kez güvenle işleyebildiğinden emin olun.
SDK sürümlerini proaktif olarak izleyin — Yeni hizmetler eklerken veya bağımlılıkları güncellerken ApsaraMQ for RocketMQ istemci SDK'nızın kademeli kapatma için gerekli minimum sürüm gereksinimlerini hâlâ karşıladığını doğrulayın.