Sıralı convoy kalıbı
Diğer ileti gruplarının işlenmesini engellemeden, birbiriyle ilgili bir dizi iletiyi tanımlı sırada işleyin.
Bağlam ve sorun
Uygulamalar genellikle bir dizi iletiyi geldikçe, daha sonra artan yükü işlemek üzere ölçeklendirebilecek şekilde işlemek zorunda kalır. Dağıtılmış bir mimaride, çalışanlar bağımsız olarak ve genellikle iletileri bağımsız bir şekilde ölçeklendirerek rekabet eden bir tüketici düzenikullanarak bu iletilerin sırayla işlenmesi basittir.
Örneğin, bir sipariş izleme sistemi siparişleri ve bu emirlerdeki ilgili işlemleri içeren bir genel muhasebe alır. Bu işlemler sipariş oluşturmak, sipariş için bir işlem eklemek, geçmiş bir işlemi değiştirmek veya bir siparişi silmek olabilir. Bu sistemde, işlemler ilk çıkar (FıFO) biçiminde gerçekleştirilmelidir, ancak yalnızca sipariş düzeyinde gerçekleştirilmelidir. Ancak, ilk kuyruk, araya eklemeli olabilecek birçok siparişe yönelik işlemler içeren bir genel muhasebe alır.
Çözüm
İlgili iletileri sıraya alma sistemi içindeki kategorilerde gönderin ve kuyruk dinleyicilerini tek seferde yalnızca bir kategoriden, tek bir iletiden yalnızca bir kategoriden alın.
Genel sıralı convoy deseninin şöyle görünmesi aşağıda verilmiştir:

Kuyrukta, farklı kategorilere yönelik mesajlar aşağıdaki diyagramda gösterildiği gibi araya eklemeli:

Sorunlar ve dikkat edilmesi gerekenler
Bu düzenin nasıl uygulanacağına karar verirken aşağıdaki noktaları göz önünde bulundurun:
- Kategori/ölçek birimi. Gelen iletilerinizin hangi özelliği üzerinde ölçeklendirme yapabilirsiniz? Sipariş izleme senaryosunda, bu özellik sıra KIMLIĞIDIR.
- Trafiği. Hedef iletinizin aktarım hızı nedir? Çok yüksekse, FıFO gereksinimlerinizi yeniden dikkate almanız gerekebilir. Örneğin, bir başlangıç/bitiş iletisi uygulayabilir, saate göre sıralama yapabilir ve sonra işlem için bir toplu işlem gönderebilirsiniz mi?
- Hizmet özellikleri. İleti veri yolu, bir kuyruğun kuyruğu veya kategorisi içindeki iletilerin tek seferlik işlenmesine izin veriyor mu?
- Geliştirilebilirlik. Sisteme yeni bir ileti kategorisi nasıl eklenir? Örneğin, yukarıda açıklanan muhasebe sisteminin belirli bir müşteri olduğunu varsayalım. Yeni bir müşteri eklemek istiyorsanız, müşteri KIMLIĞI başına iş dağıtan bir muhasebe işlemcisi kümesi olabilir mi?
- İletileri gönderirken değişken ağ gecikmesi nedeniyle tüketicilerin bir ileti alma olasılığı vardır. Sıralamayı doğrulamak için sıra numaraları kullanmayı düşünün. Ayrıca bir işlemin son iletisinde özel bir "sıra sonu" bayrağını da dahil edebilirsiniz. Spark veya Azure Stream Analytics gibi akış işleme teknolojileri, iletileri bir zaman penceresi içinde sırayla işleyebilir.
Bu düzenin kullanılacağı durumlar
Bu düzeni aşağıdaki durumlarda kullanın:
- Sırayla gelen ve aynı sırada işlenmesi gereken iletileriniz var.
- Gelen iletiler, kategori sistem için bir ölçek birimi haline geldiği şekilde "kategorilere ayrılır".
Bu model için uygun olmayabilir:
- FıFO gereksinimi sistem tarafından yapılabilecek ölçeklendirmeyi sınırladığından, çok yüksek aktarım hızı senaryoları (milyonlarca mesaj/dakika veya saniye).
Örnek
azure 'da bu model azure Service Bus ileti oturumlarıkullanılarak uygulanabilir. tüketiciler için, Service Bus tetikleyicisiyleService Bus peek-kilitle bağlayıcısı veya Azure işlevleri ile Logic Apps kullanabilirsiniz.
Önceki sipariş izleme örneği için, her bir muhasebe mesajını alındığı sırada işleyin ve her bir işlemi kategorinin sipariş KIMLIĞI olarak ayarlandığı başka bir kuyruğa gönderin. Bir işlem Bu senaryodaki birden fazla siparişi hiçbir şekilde kapsamayacak, bu nedenle tüketiciler her bir kategoriyi paralel ancak kategori içinde FıFO olarak işlemez.
Ledge işlemcisi, ilk sıradaki her iletinin içeriğini iptal ederek iletileri devre dışı bırakmayı ister:

Muhasebe işlemcisi şunları gerçekleştirir:
- Tek seferde bir işlem genel muhasebeye yürüme.
- İletinin oturum KIMLIĞI, sipariş KIMLIĞIYLE eşleşecek şekilde ayarlanıyor.
- Her bir muhasebe işlemini oturum KIMLIĞI sıra KIMLIĞI olarak ayarlanan bir ikincil sıraya gönderme.
Tüketiciler, eşleşen sıra kimliği olan tüm iletileri kuyruktan sırayla işleyen ikincil kuyruğu dinler. Tüketiciler, Peek-kilit modunu kullanır.
Ölçeklenebilirlik düşünüldüğünde, muhasebe kuyruğu birincil bir darboğazdır. Genel muhasebeye gönderilen farklı işlemler aynı sipariş KIMLIĞINE başvurabilir. Bununla birlikte, iletiler, bir sunucusuz ortamdaki siparişlerin sayısına kadar bir günden daha sonra bitebilirler.
Sonraki adımlar
Bu düzeni uygularken aşağıdaki bilgiler yararlı olabilir: