Akka.Net:网络上的反应流
Akka.Net: Reactive Streams over the network
我正在尝试将 Source 作为源,将 Sink 作为远程,然后将 Sink 作为源,将 Source 作为远程,分别在 AkkaStreamsModel 中实现类型 1 和类型 2 工作流。
类型 1 创建一个 SourceRef
并将其传递给远程 actor 作为接收 actor 的传入数据的公开源。类型 2 创建一个 SinkRef
并将其作为暴露的接收器传递给远程参与者以开始向其发送数据。为了进一步解释,我已将类型 1 (AkkaStreams) and Type 2 (AkkaStreamsFaulty) 工作流上传到 GitHub。
类型 1 工作流已设置并正常工作,但是类型 2 工作流有问题。我已将问题缩小到 DataReceiver
演员中的 Receive<PrepareUpload>()
方法。成功创建接收器后,使用 PipeTo()
方法将流和接收器发送(通过 MeasurementsSinkReady
消息)到源参与者。
任何人都可以指出我在 Type 2 工作流程中可能出错的地方吗?我已经用尽所有其他选项(Akka.Net Documentation; Akka.Net Gitter、各种博客和视频等)。我不确定从这里去哪里,任何帮助将不胜感激。
谢谢。
编辑(根据 Bartosz Sypytkowski's 评论添加了额外信息)
永远不会在两个参与者之间远程发送数据,这就是问题所在。使用类型 1,建立 SourceRef
并将其发送到远程参与者。远程参与者收到此消息。然而,对于类型 2,SinkRef
被创建但从未到达远程 actor。
因此,我认为问题出在 SinkRef
或 PipeTo()
方法的生成上。这是因为如果您在参与者之间发送消息,它会起作用,但如果该消息以 SinkRef
设置正确为条件,那么设置就会出错。
这是 Akka.Streams 实现中的错误 - 从 v1.4.14 开始,此问题已得到修复:https://github.com/akkadotnet/akka.net/issues/4421
我正在尝试将 Source 作为源,将 Sink 作为远程,然后将 Sink 作为源,将 Source 作为远程,分别在 AkkaStreamsModel 中实现类型 1 和类型 2 工作流。
类型 1 创建一个 SourceRef
并将其传递给远程 actor 作为接收 actor 的传入数据的公开源。类型 2 创建一个 SinkRef
并将其作为暴露的接收器传递给远程参与者以开始向其发送数据。为了进一步解释,我已将类型 1 (AkkaStreams) and Type 2 (AkkaStreamsFaulty) 工作流上传到 GitHub。
类型 1 工作流已设置并正常工作,但是类型 2 工作流有问题。我已将问题缩小到 DataReceiver
演员中的 Receive<PrepareUpload>()
方法。成功创建接收器后,使用 PipeTo()
方法将流和接收器发送(通过 MeasurementsSinkReady
消息)到源参与者。
任何人都可以指出我在 Type 2 工作流程中可能出错的地方吗?我已经用尽所有其他选项(Akka.Net Documentation; Akka.Net Gitter、各种博客和视频等)。我不确定从这里去哪里,任何帮助将不胜感激。
谢谢。
编辑(根据 Bartosz Sypytkowski's 评论添加了额外信息)
永远不会在两个参与者之间远程发送数据,这就是问题所在。使用类型 1,建立 SourceRef
并将其发送到远程参与者。远程参与者收到此消息。然而,对于类型 2,SinkRef
被创建但从未到达远程 actor。
因此,我认为问题出在 SinkRef
或 PipeTo()
方法的生成上。这是因为如果您在参与者之间发送消息,它会起作用,但如果该消息以 SinkRef
设置正确为条件,那么设置就会出错。
这是 Akka.Streams 实现中的错误 - 从 v1.4.14 开始,此问题已得到修复:https://github.com/akkadotnet/akka.net/issues/4421