推送数据流

时间:2018-07-09 14:04:11

标签: akka akka-stream akka.net

是否可以创建一个Source以便能够“手动”向其推送数据(或者我可以通过某种方式将其推送至“常规” Source)?

类似的东西:

var source = Source.Empty<int>();
source.Push(10); //is something like this possible?

我的用例是创建一个只要我的API端点被调用就可以将数据推送到的源。

1 个答案:

答案 0 :(得分:4)

是的,有可能。检出Source.Queue

  

Source.Queue可用于将元素从演员(或从流外部运行的任何对象)发射到流。元素将被缓冲,直到流可以处理它们为止。您可以将Offer个元素添加到队列中,如果下游有需求,它们将被发送到流中,否则它们将被缓冲直到收到需求。

另一个选项是Source.ActorRef

  

如果下游有需求,则发送给参与者的由Source.ActorRef实现的消息将被发送到流中,否则将被缓冲直到收到需求为止。

Source.Queue不同,Source.ActorRef不支持背压。