Ş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