Akka.Net: Реактивные потоки по сети
Я пытаюсь реализовать как источник как источник, так и приемник как удаленный, а затем приемник как источник и источник как удаленные рабочие процессы типа 1 и типа 2 в AkkaStreamsModel соответственно.
Тип 1 создает SourceRef
и передает это удаленному субъекту как открытый источник входящих данных субъекту-приемнику. Тип 2 создаетSinkRef
и передает это удаленному субъекту в качестве открытого приемника, чтобы начать отправку данных. Для дальнейшего объяснения я загрузил на GitHub рабочие процессы типа 1 ( AkkaStreams) и типа 2 ( AkkaStreamsFaulty).
Рабочий процесс типа 1 настроен и работает правильно, однако рабочий процесс типа 2 неисправен. Я сузил проблему доReceive<PrepareUpload>()
метод в DataReceiver
актер. После успешного создания раковины поток и сток отправляются (черезMeasurementsSinkReady
message) исходному актору, используя PipeTo()
метод.
Может ли кто-нибудь указать, где я могу ошибиться в рабочем процессе типа 2? Я исчерпал все остальные варианты ( документация Akka.Net; Akka.Net Gitter, различные блоги, видео и т. Д.). Я не уверен, куда идти дальше, любая помощь будет очень благодарна.
Спасибо.
Изменить (добавлена дополнительная информация в соответствии Horusiath комментарием Horusiath)
Данные никогда не пересылаются между двумя участниками удаленно, вот в чем проблема. Используя Тип 1, aSourceRef
устанавливается и отправляется удаленному субъекту. Удаленный субъект получает это сообщение. Однако для Типа 2SinkRef
создается, но никогда не достигает удаленного актера. Поэтому я предполагаю, что проблема связана с генерациейSinkRef
или PipeTo()
метод. Это потому, что если вы отправляете сообщение между участниками, оно работает, но если сообщение обусловленоSinkRef
правильно настроен, то что-то пошло не так в настройке.
1 ответ
Это была ошибка в реализации Akka.Streams — начиная с версии 1.4.14 эта проблема была исправлена: https://github.com/akkadotnet/akka.net/issues/4421 .