2

我试图在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被创建但永远不会到达远程参与者。因此,我认为问题出在SinkReforPipeTo()方法的生成上。这是因为如果您在参与者之间发送消息,它可以工作,但如果消息以SinkRef正确设置为条件,那么设置中出现了问题。

4

1 回答 1

1

这是 Akka.Streams 实现中的一个错误 - 从 v1.4.14 开始,此问题已得到修复:https ://github.com/akkadotnet/akka.net/issues/4421

于 2020-12-29T23:16:25.677 回答