【发布时间】:2020-10-29 16:01:14
【问题描述】:
我想使用 Kotlin 演员消耗一些流数据
我想把我的消费者放在一个演员里面,而它在无限循环中轮询while(true)。然后,当我决定时,我会发送一条消息来阻止消费者。
目前我有这个:
while(true) {
for (message in channel){ <--- blocked in here, waiting
when(message) {
is MessageStop -> consumer.close()
else -> {}
}
}
consumer.poll()
}
问题
这样做的问题是它只在我向参与者发送消息时运行,所以我的消费者不会在其余时间轮询,因为通道阻塞等待接收下一条消息
还有其他选择吗?有同样问题的人吗?或者类似于演员但没有被 Kotlin 中的频道阻止的东西?
【问题讨论】:
-
可以kotlin flow 做你想做的事吗?
-
出于好奇...这里的
consumer是什么?这一切都包含在actor-call 中吗?和/或channel是如何创建的?