是否可以创建一个Source
以便能够“手动”向其推送数据(或者我可以通过某种方式将其推送至“常规” Source
)?
类似的东西:
var source = Source.Empty<int>();
source.Push(10); //is something like this possible?
我的用例是创建一个只要我的API端点被调用就可以将数据推送到的源。
答案 0 :(得分:4)
是的,有可能。检出Source.Queue
:
Source.Queue
可用于将元素从演员(或从流外部运行的任何对象)发射到流。元素将被缓冲,直到流可以处理它们为止。您可以将Offer
个元素添加到队列中,如果下游有需求,它们将被发送到流中,否则它们将被缓冲直到收到需求。
另一个选项是Source.ActorRef
:
如果下游有需求,则发送给参与者的由
Source.ActorRef
实现的消息将被发送到流中,否则将被缓冲直到收到需求为止。
与Source.Queue
不同,Source.ActorRef
不支持背压。