Bu konu, ApsaraMQ for RocketMQ içindeki konuların tanımını, model ilişkisini, dahili niteliklerini, davranış kısıtlamalarını, sürüm uyumluluğunu ve kullanım notlarını açıklar.
Tanım
ApsaraMQ for RocketMQ içinde bir konu, mesajların iletilmesi ve depolanması için kullanılan üst düzey bir kapsayıcıdır. Bir konu, aynı iş mantığını paylaşan mesajları tanımlar.
Konular aşağıdaki avantajları sunar:
-
Veri sınıflandırma ve yalıtım
ApsaraMQ for RocketMQ kullanan çözümler tasarlarken farklı iş türlerine ait mesajları yönetmek için ayrı konular oluşturabilirsiniz. Bu yaklaşım, depolama ve aboneliklerin yalıtılmasını sağlar.
-
Kimlik ve izin yönetimi
ApsaraMQ for RocketMQ içindeki mesajlar anonimdir. Belirli bir kategoriye ait mesajlar için kimlikleri ve izinleri yönetmek üzere bir konu kullanabilirsiniz.
Model ilişkisi
Aşağıdaki şekil, bir konunun ApsaraMQ for RocketMQ alan modelindeki konumunu gösterir.

ApsaraMQ for RocketMQ içinde bir konu, tüm mesaj kaynakları için üst düzey bir kapsayıcıdır. Ancak konu, gerçek bir mesaj kapsayıcısı değil, mantıksal bir kavramdır.
Bir konu, mesaj depolama ve yatay ölçeklendirmeyi sağlayan bir veya daha fazla kuyruktan oluşur. Bir konuya ilişkin tüm kısıtlamalar ve nitelik ayarları kuyruk düzeyinde uygulanır.
Bir konu Lite türündeyse bunun altında LiteTopic kaynakları oluşturabilirsiniz. Varsayılan olarak her LiteTopic tek bir kuyruktan oluşur.
Kavramlar
Konu
ApsaraMQ for RocketMQ içinde bir konu, mesajların iletilmesi ve depolanması için kullanılan üst düzey bir kapsayıcıdır. Aynı iş mantığını paylaşan mesajları tanımlar ve konu adıyla benzersiz şekilde belirlenir.
LiteTopic
Bir konu Lite türündeyse bunun altında LiteTopic'ler oluşturabilirsiniz. Konu ve LiteTopic kombinasyonu, mesaj depolama kapsayıcısını benzersiz şekilde tanımlar. Varsayılan olarak her depolama kapsayıcısı tek bir kuyruktan oluşur.
Dahili nitelikler
Davranış kısıtlamaları
Zorunlu mesaj türü doğrulaması
ApsaraMQ for RocketMQ 5.x'te mesaj türleri konular içinde bağımsız olarak yönetilir ve işlenir. Sistem, gönderilen bir mesajın türünü hedef konu için tanımlanan mesaj türüne göre doğrular. Doğrulama başarısız olursa gönderme isteği reddedilir ve sistem bir tür uyuşmazlığı özel durumu döndürür. Aşağıdaki doğrulama kuralları uygulanır:
-
Mesaj türü tutarlılığı
Gönderilen mesajın türü, hedef konu için tanımlanan mesaj türüyle eşleşmelidir.
-
Konu başına tek mesaj türü
Her konu yalnızca bir mesaj türünü destekler. Farklı türdeki mesajları aynı konuya gönderemezsiniz.
Yaygın hatalı kullanım senaryoları
-
Eşleşmeyen türde mesaj gönderme
Örneğin, bir konu oluşturup mesaj türünü sıralı olarak tanımlarsanız ancak ardından bu konuya bir işlemsel mesaj gönderirseniz gönderme isteği reddedilir ve bir tür uyuşmazlığı özel durumu döndürülür.
-
Tek bir konuda mesaj türlerini karıştırma
Örneğin, bir konu oluşturup mesaj türünü normal olarak tanımlarsanız ve ardından bu konuya hem normal hem de sıralı mesajlar gönderirseniz sıralı mesajları gönderme istekleri reddedilir ve bir tür uyuşmazlığı özel durumu döndürülür.
Sürüm uyumluluğu
Zorunlu mesaj türü doğrulaması yalnızca ApsaraMQ for RocketMQ 5.x aracıları için geçerlidir.
ApsaraMQ for RocketMQ 4.x aracıları mesaj türü doğrulamasını zorunlu kılmaz. Ancak bu aracıları kullanırken mesaj türü tutarlılığını korumanızı öneririz.
Kullanım notları
Konuları iş kategorilerine göre planlayın
ApsaraMQ for RocketMQ içinde konuları tasarlarken mesajları ana iş kategorisine göre gruplandırmanızı öneririz. Aynı iş alanı içinde aynı işlevsel niteliklere sahip mesajları tek bir konuda toplayın. Konu granülerliğini belirlerken aşağıdaki faktörleri göz önünde bulundurun:
Mesaj türü tutarlılığı: Sıralı mesajlar ve normal mesajlar gibi farklı mesaj türleri farklı konular gerektirir.
İş alakası: İşler doğrudan ilişkili değilse farklı konular kullanın. Örneğin, Taobao işlem mesajları ile Freshippo lojistik mesajları arasında iş örtüşmesi yoktur ve farklı konular gerektirir. Aynı iş içindeki mesajlar için, örneğin Taobao işlem mesajları için hem kadın hem de erkek giyim siparişlerinde aynı konuyu kullanabilirsiniz. Ancak iş hacmi büyükse veya alt modüller sipariş türlerinin daha fazla sınıflandırılmasını gerektiriyorsa mesajları erkek ve kadın giyim siparişleri için iki ayrı konuya da bölebilirsiniz.
Mesaj hacmi: Büyüklük veya zamanlama gereksinimleri açısından farklılık gösteren iş mesajları için farklı konular kullanmanızı öneririz. Örneğin, bazı iş mesajlarının hacmi çok küçüktür ancak yüksek zaman duyarlılığına sahiptir. Bu mesajlar, yüksek hacimli mesaj üreten bir işle aynı konuyu paylaşırsa zaman duyarlı mesajlar için bekleme süresi artar.
Doğru konu bölme örneği: Çevrimiçi alışveriş senaryosunda sipariş oluşturma, ödeme ve iptal gibi sipariş işlem mesajları için bir konu kullanabilirsiniz. Lojistikle ilgili mesajlar için ayrı bir konu ve puan yönetimi mesajları için başka bir konu kullanabilirsiniz.
Yanlış konu bölme örnekleri:
Aşırı kaba granülerlikle bölme: Bu durum zayıf iş yalıtımına yol açar ve bağımsız işletme ve bakım ile hata işlemeyi karmaşıklaştırır. Buna örnek olarak tüm işlem ve lojistik mesajları için tek bir konu kullanılması verilebilir.
Aşırı ince granülerlikle bölme: Bu durum aşırı konu kaynağı tüketir ve sistemi aşırı yükleyebilir. Buna örnek olarak her kullanıcı kimliği için ayrı bir konu oluşturulması verilebilir.
Tek bir mesaj türü için tek bir konu kullanın ve türleri karıştırmayın
ApsaraMQ for RocketMQ içindeki konular işleri yalıtmak için tasarlanmıştır. Farklı iş mantığına sahip mesajlar için farklı konular kullanmanızı öneririz. Aynı iş mantığına sahip mesajların aynı mesaj türü vardır. Bu nedenle, tek bir konu yalnızca bir tür mesaj için kullanılmalıdır.
Konu yönetimi için otomatik mekanizmalar kullanmaktan kaçının
ApsaraMQ for RocketMQ mimarisinde konular üst düzey kaynaklar ve kapsayıcılardır. İzin yönetimi, gözlemlenebilirlik ölçümlerinin toplanması ve izleme için bağımsız yeteneklere sahiptirler. Konu oluşturma ve yönetimi sistem kaynaklarını tüketir. Bu nedenle, üretim ortamında konu kaynaklarını sıkı bir şekilde yönetmelisiniz. Konuları keyfi olarak eklemeyin, silmeyin, değiştirmeyin veya sorgulamayın.