【问题标题】:Push data to stream将数据推送到流
【发布时间】:2018-12-17 06:04:03
【问题描述】:
是否有可能创建一个Source,我将能够“手动”将数据推送到该Source(或者我可以以某种方式将其推送到“常规”Source)?
类似:
var source = Source.Empty<int>();
source.Push(10); //is something like this possible?
我的用例是创建一个源,只要调用我的 API 端点,我就可以将数据推送到该源。
【问题讨论】:
标签:
akka
akka-stream
akka.net
【解决方案1】:
是的,这是可能的。查看Source.Queue:
Source.Queue 可用于将元素从演员(或从任何在流之外运行的东西)发射到流中。元素将被缓冲,直到流可以处理它们。您可以Offer 元素到队列中,如果下游有需求,它们将被发送到流中,否则它们将被缓冲直到收到需求请求。
另一个选项是Source.ActorRef:
如果下游有需求,发送给由Source.ActorRef具体化的actor的消息将被发送到流中,否则它们将被缓冲直到收到请求。
与Source.Queue 不同,Source.ActorRef 不支持背压。