ApsaraMQ for RocketMQ mesajları tüketicilere iki moddan birinde iletir: kümeleme tüketimi (her mesaj gruptaki yalnızca bir tüketiciye gider) veya yayınlama tüketimi (her mesaj gruptaki tüm tüketicilere gider). Varsayılan mod kümeleme tüketimidir.
Tüketim modu seçin
Aynı grup kimliğiyle tanımlanan birden çok tüketici bir tüketici grubu oluşturur. Aynı gruptaki tüketiciler aynı tüketim mantığını kullanmalı, aynı konulara ve etiketlere abone olmalı ve aynı tüketim modunu kullanmalıdır. Daha fazla bilgi için bkz. Abonelik tutarlılığı.
Gruptaki tüketicilerin mesajları nasıl alması gerektiğine bağlı olarak uygun modu seçin:
| Hedef | Mod | Çalışma şekli |
|---|---|---|
| Mesajları paralel işleme için tüketiciler arasında dağıtın | Kümeleme tüketimi | Her mesaj gruptaki tam olarak bir tüketiciye iletilir. Tüketiciler iş yükünü paylaşır. |
| Her mesajı her tüketiciye iletin | Yayınlama tüketimi | Her mesaj gruptaki tüm tüketicilere iletilir. Her tüketici tam mesaj akışını işler. |
Bir tüketim modunu açıkça ayarlamazsanız kümeleme tüketimi kullanılır.
Kümeleme tüketimi
Kümeleme tüketimi modunda ApsaraMQ for RocketMQ bir konudaki mesajları gruptaki tüketiciler arasında dağıtır. Her mesajı yalnızca bir tüketici tüketir.

Kullanım senaryoları
Yüksek aktarım hızı için yük dengeleme: Büyük hacimli mesajları birden çok tüketiciye yayarak her birinin bir alt kümeyi işlemesini sağlayın. Daha fazla tüketici eklemek aktarım hızını artırır.
Dağıtılmış veri işleme: İşleri birden çok düğümde bölümlere ayırarak her düğümün verinin bir bölümünü bağımsız olarak işlemesini sağlayın.
Kullanım notları
Başarısız olan bir mesaj mutlaka aynı tüketiciye yeniden gönderilmez. Yeniden dengeleme sonrasında mesaj gruptaki farklı bir tüketiciye gidebilir.
Tüketici ilerlemesi (ofsetler) ApsaraMQ for RocketMQ aracılarında saklanır. Bir tüketici yeniden başlatıldığında son kaydedilen ofsetten devam eder; böylece hiçbir mesaj atlanmaz.
Mesaj yeniden denemesi desteklenir. Bir tüketici bir mesajı işleyemezse aracı mesajı otomatik olarak yeniden iletir. Ayrıntılar için bkz. Mesaj yeniden denemesi.
Yayınlama tüketimi
Yayınlama tüketimi modunda ApsaraMQ for RocketMQ her mesajı gruptaki tüm tüketicilere iletir. Her mesajı her tüketici en az bir kez tüketir. Bu mod; sipariş işleme gibi birden çok tüketicinin aynı mesaj grubunu eş zamanlı olarak işlediği senaryolar için uygundur.

Kullanım senaryoları
Bildirimler ve duyurular: Bir güncellemeyi tüm abonelere göndererek her tüketicinin buna göre hareket etmesini sağlayın.
Gerçek zamanlı veri senkronizasyonu: Yerel önbellekleri veya durumu tutarlı tutmak için dağıtılmış bir sistemdeki tüm düğümlere veri değişikliklerini yayınlayın.
Kullanım notları
Otomatik yeniden deneme yok: Aracı, bir tüketicinin işleyemediği mesajları yeniden iletmez. Tüketim hatalarını uygulama mantığınızda ele alın.
Yeniden başlatma davranışı: Bir tüketici yeniden başlatıldığında en son mesajdan başlayarak tüketmeye devam eder. Tüketici çevrimdışıyken yayınlanan mesajlar atlanır.
Daha yüksek kaynak kullanımı: Her tüketici her mesajı işlediğinden kaynak tüketimi katlanır. Kullanım senaryonuz özellikle çoğaltma teslimatı gerektirmiyorsa kümeleme tüketimini kullanın.
Özellik karşılaştırması
Yayınlama tüketimi, çoğaltma teslimatı karşılığında özellik zenginliğinden ödün verir. Aşağıdaki tabloda her modun destekledikleri listelenmiştir.
| Özellik | Kümeleme tüketimi | Yayınlama tüketimi |
|---|---|---|
| TCP istemci SDK'ları | Desteklenir | Desteklenir |
| HTTP istemci SDK'ları | Desteklenir | Desteklenmez |
| Sıralı mesajlar | Desteklenir | Desteklenmez |
| Tüketici ofsetini sıfırlama | Desteklenir | Desteklenmez |
| Mesaj yeniden denemesi | Desteklenir | Desteklenmez |
| Biriken mesaj sorgulama ve uyarı | Desteklenir | Desteklenmez |
| Abonelik sorgulama | Desteklenir | Desteklenmez |
Yayınlama tüketimi modunda aracı başarısız mesajları yeniden denemez, tüketim ilerlemesini izlemez ve ofset sıfırlamayı desteklemez. Bu durumları uygulama düzeyinde ele almak üzere tüketicinizi tasarlayın.
Tüketici ilerlemesi takibi
Tüketici ilerlemesinin izlenme şekli iki mod arasında farklılık gösterir:
| Yön | Kümeleme tüketimi | Yayınlama tüketimi |
|---|---|---|
| Saklama yeri | ApsaraMQ for RocketMQ aracı | İstemci |
| Yeniden başlatma sonrası | Son kaydedilen ofsetten devam eder | En son mesajdan başlar |
| Güvenilirlik | Daha yüksek -- aracı tarafından yönetilen ofsetler istemci hatalarından kurtulur | Daha düşük -- istemci tarafından yönetilen ofsetler yeniden başlatmada kaybolur; tekrarlayan tüketim olasılığı daha yüksektir |
| Mesaj yeniden denemesi | Aracı başarısız mesajları otomatik olarak yeniden iletir | Otomatik yeniden deneme yok; hataları kodunuzda ele alın |
Tüketim modunu yapılandırın
Tüketici SDK kodunuzda MessageModel parametresini ayarlayın. Bu parametreyi ayarlamazsanız varsayılan olarak kümeleme tüketimi kullanılır.
TCP istemci SDK'ları
Tüm TCP istemci SDK örneklerinde tüketici yapılandırmasında MessageModel özelliği ayarlanır.
Java
-
Kümeleme tüketimi
// Clustering consumption is the default. This explicit setting is optional. properties.put(PropertyKeyConst.MessageModel, PropertyValueConst.CLUSTERING); -
Yayınlama tüketimi
properties.put(PropertyKeyConst.MessageModel, PropertyValueConst.BROADCASTING);
C/C++
-
Kümeleme tüketimi
// Clustering consumption is the default. This explicit setting is optional. factoryInfo.setFactoryProperty(ONSFactoryProperty::MessageModel, ONSFactoryProperty::CLUSTERING); -
Yayınlama tüketimi
factoryInfo.setFactoryProperty(ONSFactoryProperty::MessageModel, ONSFactoryProperty::BROADCASTING);
.NET
-
Kümeleme tüketimi
// Clustering consumption is the default. This explicit setting is optional. factoryInfo.setFactoryProperty(ONSFactoryProperty.MessageModel, ONSFactoryProperty.CLUSTERING); -
Yayınlama tüketimi
factoryInfo.setFactoryProperty(ONSFactoryProperty.MessageModel, ONSFactoryProperty.BROADCASTING);
HTTP istemci SDK'ları
HTTP istemci SDK'ları yalnızca kümeleme tüketimini destekler. Yapılandırma gerekmez.
SSS
Yayınlama tüketimini yapılandırdıktan sonra neden etkili olmuyor?
Bu durum, mesaj türünün veya SDK'nın yayınlama tüketimini desteklememesi durumunda gerçekleşir:
Sıralı mesajlar: Sıralı mesajlar yalnızca kümeleme tüketimini destekler.
MessageModelayarı yoksayılır.HTTP istemci SDK: HTTP istemcileri yalnızca kümeleme tüketimini destekler. Yayınlama tüketimini kullanmak için bir TCP istemci SDK'sına geçin.
Tek bir grupta tüketim modlarını karıştırabilir miyim?
Hayır. Bir gruptaki tüm tüketiciler aynı tüketim modunu kullanmalıdır.
Aynı gruptaki tüketicilerde farklı MessageModel ayarları varsa gruptaki tüm tüketiciler için yayınlama tüketimi etkili olur. Örneğin, ikisi CLUSTERING ve üçü BROADCASTING olarak ayarlanmış beş tüketiciden oluşan bir grupta beşi de yayınlama tüketimi kullanır.
Sonraki adımlar
Abonelik tutarlılığı: Bir gruptaki tüketiciler arasında abonelik yapılandırmalarını tutarlı tutma kuralları.
Mesaj yeniden denemesi: Kümeleme tüketimi modunda aracının başarısız mesaj teslimatını nasıl ele aldığı.
Örnek kod: ApsaraMQ for RocketMQ için eksiksiz mesajlaşma örnekleri.