2016-04-05 9 views
0

içindeki Kinesis Olaylar gönderdi. Ben olay yapımcı tarafı nedenle KinesisAsyncClient etkinlikleri göndermek için kullanılan bir beklemeye maruz istemiyoruz. Ancak benim olay işleme düzgün çalışması için sırayla, benim yapımcı tarafındaki "Ben putRecordAsync denilen düzen" de eşitler işlemek gerekir. Bu bilgiler her Kinesis Record içinde bir zaman damgası alanı olarak kullanılabilir. engelleme senkron Kinesis istemcisi kullanmak için geçiş yapmasını Kenaraben okur ve Kinesis Müşteri Kütüphanesi (KCL) kullanarak bir AWS Kinesis Çayı'nın olayları işleyen bir uygulama üzerinde çalışıyorum KCL

, başka bir çözüm verimli akış etkinliklerini sıralamak mümkündür var mı? Sipariş önemliyse

+0

Okuyucu Olayları akışta oldukları sırayla alacaktır. Sadece olay tarafını üretici tarafınızdan kontrol edebilirsiniz. Birden fazla etkinliği sırayla koyan putRecords'ı (notları) kullanabilirsiniz. Bir sonraki etkinliği arkasına koymak için önceki olayın sekme kimliğini de kullanabilirsiniz. Bu size mantıklı geliyor mu? – Guy

+0

@Guy Kinesis'in Async İstemcisini kullanarak putRecordsAync, olayların sırasını da garanti ediyor mu? – SuSanD

+0

Kinesis ile PutRecords (eşitleme veya eşzamanlama) API çağrısı, çağrı yükündeki olayların sırasını korur. Farklı bir API çağrısı oluşturmak için istemci kodunda ek toplu işlem yapıyorsanız, bu olaylar sırayla olmayabilir. Birden fazla aramada async'i aradınız. – Guy

cevap

0

, değil zaman uyumsuz istemci kullanırız.

Async istemcisi, aynı çağrıları yapmak için kapakların altındaki bir iş parçacığı havuzunu kullanır - çok iş parçacıklı olduğundan, bu iş parçacıklarının yürütme sırasını garanti edemezsiniz ve sonuç olarak, bunlar üzerinde denetiminiz yoktur. Kayıtlar Kinesis tarafından alınır.

Şimdi, gecikme gerçekten üretici için bir sorun olup olmadığını:

  1. Eğer mümkünse (yerine PutRecord ait) PutRecords aradığınız emin olun - bu kesinlikle size bazı ağ yuvarlak gezileri kaydeder.

  2. İstemciyi doğrudan çağırmak yerine, sıralı kayıtları yerel bir sıraya koyun ve PutRecords'ı çağırmak için bu sıradan düzenli olarak yoklamak için bir arka plan iş parçacığı kullanın. akılda tutulması gereken

gereken diğer noktalar - Bu boşaltmak yakın işlemdeki kuyruğunu tutmak için yeterince hızlı değilse, o size koyarak birden konuları gerekir yeterince büyük bir veri hacmini var belirtir veri ve artık kesin siparişiniz yok. Bu durumda, sıra numaralarını kayıt numaranıza kaydetmenizi öneriyorum, böylece gerekirse tüketici tarafında yeniden sipariş verebilirsiniz (bu durumda KSSS'ler yerine başlangıç ​​noktası olarak SQS'yi düşünün)

İlgili konular