سلام بچه ها امیدوارم که حالتون خوب باشه .بازم اومدیم با یه پست دیگه از مفاهیم مربوط به flow ها .پیشنهاد میکنم پست های دیگه مرتبط با این مبحث رو مطالعه کنید تا بتونید مفاهیم رو کامل درک کنید.
خب ببینیم Cold Flow چی هست؟
در مثال زیر یکCold Flow تعریف میشود که اعداد ۱ تا ۵ را در فواصل یک ثانیهای ارسال میکند. سپس دو collector برای این فلو تعریف میشود. اولین collector مقادیر را چاپ میکند و دومین collector نیز پس از ۲.۵ ثانیه شروع به جمعآوری مقادیر میکند.
val numbersColdFlow = getNumbersColdFlow()
numbersColdFlow
.collect {
println("1st Collector: $it")
}
delay(2500)
numbersColdFlow
.collect {
println("2nd Collector: $it")
}
خروجی کد بالا به صورت زیر خواهد بود
1st Collector: 1
1st Collector: 2
1st Collector: 3
1st Collector: 4
1st Collector: 5
2nd Collector: 1
2nd Collector: 2
2nd Collector: 3
2nd Collector: 4
2nd Collector: 5
ارسال خب همانطور که در خروجی بالا میبینیم به ازای هر collector فلو از ابتدا شروع به انتشار دیتاها میکند.
در این مثال، یک Hot Flow تعریف میشود که اعداد ۱ تا ۵ را در فواصل یک ثانیهای ارسال میکند. سپس دو collector برای این فلو تعریف میشود. اولین collector مقادیر را چاپ میکند و دومین collector نیز پس از ۲.۵ ثانیه شروع به جمعآوری مقادیر میکند.
val numbersHotFlow = getNumbersHotFlow()
numbersHotFlow
.collect {
println("1st Collector: $it")
}
delay(2500)
numbersHotFlow
.collect {
println("2nd Collector: $it")
}
1st Collector: 1
1st Collector: 2
1st Collector: 3
1st Collector: 4
1st Collector: 5
2nd Collector: 3
2nd Collector: 4
2nd Collector: 5
در فلوهای گرم، collector ها از جایی که شروع به جمعآوری کردهاند، مقادیر را دریافت میکنند. در مثال بالا، collector اول همه مقادیر را دریافت میکند، اما collector دوم فقط مقادیری را دریافت میکند که پس از ۲.۵ ثانیه ارسال شدهاند، چون پس از این زمان شروع به جمعآوری کرده است.
همچنین میتوانیم تنظیماتی را برای ذخیرهسازی دادهها در فلوهای گرم انجام دهیم. به عنوان مثال، میتوانیم تنظیم کنیم که فقط آخرین مقدار ارسالی ذخیره شود.