我试图在AkkaStreamsModel 中分别实现 Source 作为源和 Sink 作为远程,然后将 Sink 作为源和源作为远程,Type 1 和 Type 2 工作流。
类型 1 创建 aSourceRef
并将其作为传入数据的公开源传递给远程 Actor 到接收器 Actor。类型 2 创建 aSinkRef
并将其作为暴露的接收器传递给远程参与者以开始向其发送数据。为了进一步解释,我已将 Type 1 ( AkkaStreams ) 和 Type 2 ( AkkaStreamsFaulty ) 工作流上传到 GitHub。
类型 1 工作流已设置并正常工作,但是,类型 2 工作流有故障。我已将问题缩小到演员Receive<PrepareUpload>()
内部的方法。DataReceiver
在成功创建接收器后,使用该方法将流和接收器(通过MeasurementsSinkReady
消息)发送到源参与者PipeTo()
。
谁能指出我在 Type 2 工作流程中可能出错的地方?我已经用尽了所有其他选项(Akka.Net 文档;Akka.Net Gitter,各种博客和视频等)。我不确定从这里去哪里,任何帮助将不胜感激。
谢谢你。
编辑(根据Bartosz Sypytkowski 的评论添加了额外信息)
数据永远不会在两个参与者之间远程发送,这就是问题所在。使用类型 1,aSourceRef
被建立并发送到远程参与者。远程参与者收到此消息。然而,对于类型 2,它SinkRef
被创建但永远不会到达远程参与者。因此,我认为问题出在SinkRef
orPipeTo()
方法的生成上。这是因为如果您在参与者之间发送消息,它可以工作,但如果消息以SinkRef
正确设置为条件,那么设置中出现了问题。