2 Mayıs 2023 Salı

Hazelcast Jet Traverser Arayüzü - Iterator + Strream Gibi

Giriş
Şu satırı dahil ederiz 
import com.hazelcast.jet.Traverser;
- Belirtilen kaynaktan okur veya üzerinde yürüyerek bir veya daha fazla nesne döner. 
Traverser arayüzü bir @FunctionalInterface O yüzden çoğu gerçekleştirim sadece next() metodunu override eden lambda ile yapılabilir.

Neden Iterator + Stream Gibi
Çünkü hem next() metodu sağlıyor hem de Stream gibi flatMap(), map(), filter() gibi default metodlar sağlıyor

Traverser ve Inbox Ilişkisi
Traverser nesnesi Inbox'tan gelen bir nesneye işlem uygular ve bu çıktıyı Outbox'a yazılır. Yazma için 
AbstractProcessor#emitFromTraverser() metodu kullanılır

next metodu
Açıklaması şöyle
The next() method is called to obtain the next item in the sequence, and it returns null when there are no more items. A Traverser instance can be thought of as a non-blocking iterator that can be used to read items from an input source in a distributed and scalable manner.
Default Metodlar
dropWhile
filter
flatMap
map
onFirstNull
peek
prepend
takeWhile

flatMap metodu
Örnek
Şöyle yaparız. Iterator'deki her nesne için bir başka iterator dönülüyor
Iterator<JetSqlRow> joinRow(JetSqlRow leftRow) {
  ...       
}

Iterable<JetSqlRow> leftRows = ...;
Traversers.traverseIterable(leftRows)
  .flatMap(jetSqlRow -> Traversers.traverseIterator(joinRow(jetSqlRow)



Hiç yorum yok:

Yorum Gönder

THIRD-PARTY.txt Dosyası

Kullanılan harici kütüphanelerin sürümleri bu dosyada Dosyanın yolu şöyle hazelcast/licenses/THIRD-PARTY.txt