不推荐使用ActorPublisher
以支持GraphStage
,看起来好像我必须放弃我在GraphStateLogic管理状态下的actor管理状态。但是通过演员管理状态,我能够通过向我的演员发送任意消息来改变状态,而使用GraphStateLogic,我不知道如何做到这一点。
所以之前如果我想创建一个Source来公开通过HTTP请求/响应提供的数据,那么ActorPublisher
请求通过Request
消息传递给我的演员,我可以做出反应通过在后台启动HTTP请求并将响应发送给我的actor,以便我可以将其内容发送到下游。
如果我无法向其发送任意消息,那么如何使用GraphStageLogic
实例进行此操作并不明显。需求通过OnPull()
传达,我可以通过在后台启动HTTP请求来做出反应。但是当响应进来时,我如何安全地改变GraphStateLogic的状态?
(除非重要,我使用Akka.Net,但我相信这适用于整个Akka流模型。我认为Akka中的解决方案也是Akka的解决方案。 Net。我还假设ActorPublisher最终也会在Akka.Net中弃用,即使它现在还没有。)
答案 0 :(得分:1)
我认为这个问题是指“异步边通道”,这里将讨论: http://doc.akka.io/docs/akka/2.5.3/scala/stream/stream-customize.html#using-asynchronous-side-channels
使用异步侧信道
为了接收未作为流元素到达的异步事件(例如,未来的完成或来自第三方API的回调),必须通过调用
AsyncCallback
来获取getAsyncCallback()
舞台逻辑。方法getAsyncCallback
将参数作为异步事件触发时将调用的回调。