Size: a a a

Kotlin Community

2020 May 18

AL

Anton Lakotka in Kotlin Community
ок. а система распределенная?
источник

i

i_vovolk in Kotlin Community
нет
источник

i

i_vovolk in Kotlin Community
логирование прямо сейчас и идет по-простому в корутинах, вот потребовалось мне добавить новую реакцию, я и задумался про что-то более масштибируемое
источник

AL

Anton Lakotka in Kotlin Community
ну тогда решается обычными корутинами.  И flow тут не совсем нужен.
Все хорошо ложится на actor.
источник

AN

Alexander Nozik in Kotlin Community
Ну можно и flow. Только надо помнить, что вся информация до момента подписки подписчиком теряется.
источник

i

i_vovolk in Kotlin Community
Только надо помнить, что вся информация до момента подписки подписчиком теряется
это понятно
источник

i

i_vovolk in Kotlin Community
Anton Lakotka
ок. а система распределенная?
интересно было бы посмотреть на пример Flow в распределенной системе. В моем понимании, это как раз и подходит для не распределенных.
источник

AL

Anton Lakotka in Kotlin Community
i_vovolk
интересно было бы посмотреть на пример Flow в распределенной системе. В моем понимании, это как раз и подходит для не распределенных.
я для распределенных систем у себя использую Vert.x
источник

AN

Alexander Nozik in Kotlin Community
i_vovolk
Только надо помнить, что вся информация до момента подписки подписчиком теряется
это понятно
Ну и да, вероятно у вас не получится сделать здесь холодный flow. Особенно если точек-источников событий много. Так что все равно придется городить что-то типа актора
источник

AN

Alexander Nozik in Kotlin Community
i_vovolk
интересно было бы посмотреть на пример Flow в распределенной системе. В моем понимании, это как раз и подходит для не распределенных.
вы можете к нему приделать отправку сообщений
источник

i

i_vovolk in Kotlin Community
Спасибо всем за ответы, направление мысли получено
источник

AK

Artyom Krikheli in Kotlin Community
Всем добрый день! Есть вопрос по Flow. В контроллере spring есть suspend-функция, в которой примерно такой код:
(1..params.packetCount)
               .asFlow()
               .flatMapMerge {
                   flow {
                       log.debug("Generating packet with params = {}", params.something)
                       val packet = getPacket()
                       emit(packet)
                   }.flowOn(Dispatchers.Default)
               }
               .collect {
                   log.debug("Writing packet = {} to file = {}", it, file)
               }
источник

AK

Artyom Krikheli in Kotlin Community
Логика collector'а выполняется так же в пуле dispatcher-worker'ов. Хотя по доке я ожидал слегка другого поведения: "This operator is context preserving: context does not leak into the downstream flow."
источник

BP

Bogdan Panchenko in Kotlin Community
Ребят есть такой глюк: Идея все выводит нормально. А вот компилятор ругается что типы не соотвецтвует, хотя тип явно проставлен возле переменной
источник

BP

Bogdan Panchenko in Kotlin Community
в даном случае это еще и мавен, не знаю куда грешить, котлин самый новый, Java11
источник

AN

Alexander Nozik in Kotlin Community
Bogdan Panchenko
Ребят есть такой глюк: Идея все выводит нормально. А вот компилятор ругается что типы не соотвецтвует, хотя тип явно проставлен возле переменной
А текст ошибки какой?
источник

BP

Bogdan Panchenko in Kotlin Community
Error:(932, 21) Kotlin: Type mismatch: inferred type is () -> Unit but (Node) -> Unit was expected
Error:(932, 36) Kotlin: Unresolved reference: it
источник

AN

Alexander Nozik in Kotlin Community
Bogdan Panchenko
Error:(932, 21) Kotlin: Type mismatch: inferred type is () -> Unit but (Node) -> Unit was expected
Error:(932, 36) Kotlin: Unresolved reference: it
я бы сказал, что расхождение типов type inference, но если тип явно прописан...
источник

BP

Bogdan Panchenko in Kotlin Community
Alexander Nozik
я бы сказал, что расхождение типов type inference, но если тип явно прописан...
val attach: (Node) -> Unit = if (parent is BorderPane) {
           when (this) {
               parent.top -> {
                   { parent.top = it }
               }
               parent.right -> {
                   { parent.right = it }
               }
               parent.bottom -> {
                   { parent.bottom = it }
               }
               parent.left -> {
                   { parent.left = it }
               }
               parent.center -> {
                   { parent.center = it }
               }
               else -> {
                   {  throw IllegalStateException("Child of BorderPane not found in BorderPane") }
               }
           }
       } else {
           val children = parent.children
           val index = children.indexOf(this);
           { children.add(index, it) }
       }
источник

BP

Bogdan Panchenko in Kotlin Community
было уже такое, добавил явный тип, но помогло обнова комипилятора
источник