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 .

Другие вопросы по тегам