我目前正在为一个个人项目使用Akka (用Java语言),我很难理解如何将元素发送到Source
。
其想法是使用WebSocket将内容推送到用户的web浏览器中。我已经按照Akka HTTP文档成功地使用Akka流创建了一个请求响应系统,但这不是我想要做的。
查看Akka文档,我看到了Source.queue
和Source.actorRef
。但我不明白如何将一个元素放入Source
中。Source.queue
和Source.actorRef
返回一个Source
,它没有方法offer
(对于Source.queue
)或tell
(对于Source.actorRef
)。
我的问题是:如何使ActorRef
用于Source.actorRef
创建的Source
,或者如何使SourceQueueWithComplete
用于使用Source.queue
创建的Source
,以便能够将元素发送到Source
我搜索了各种Akka文档,但没有找到这样做的方法。我在互联网上找到的大部分代码都是用Scala编写的,这似乎没有同样的问题。
发布于 2017-11-16 03:12:57
来自Source.actorRef
和Source.queue
的参与者和队列分别是这些源的物化值,这意味着只有当流运行时才能获得它们。例如:
final ActorRef actor =
Source.actorRef(Integer.MAX_VALUE, OverflowStrategy.fail())
.to(Sink.foreach(m -> System.out.println(m)))
.run(materializer);
actor.tell("do something", ActorRef.noSender());
在Scala中没有什么不同:
implicit val materializer = ActorMaterializer()
val actor =
Source.actorRef(Int.MaxValue, OverflowStrategy.fail)
.to(Sink.foreach(println))
.run()
actor ! "do something"
https://stackoverflow.com/questions/47327565
复制相似问题