Не удается подключиться к серверу vsftpd с помощью alpakka (akka-streams) - PullRequest
0 голосов
/ 28 июня 2019

Я пытаюсь воссоздать пример прохождения для соединителя FTP-источника Alpakka с vsftpd server в образе Docker, но, похоже, не могу подключиться.Любые указатели по настройке кода будут приветствоваться:

FtpSettings ftpSettings = FtpSettings
  .create(InetAddress.getLocalhost())
  .withPort(21)
  .withCredentials(FtpCredentials.NonAnonFtpCredentials.create("news", "test"))
  .withBinary(true)
  .withPassiveMode(true)
  .withConfigureConnectionConsumer(
    (FTPClient ftpClient) -> {
      ftpClient.addProtocolCommandListener(
        new PrintCommandListener(new PrintWriter(System.out), true));
    });

Source<FtpFile, NotUsed> ftp = Ftp.ls("/", ftpSettings);
ftp.to(Sink.foreach(s -> LOGGER.info(s.name())));

К вашему сведению: информация для входа в систему работает, например, с filezilla.

1 Ответ

1 голос
/ 03 июля 2019

Source.to возвращает RunnableGraph, который является «планом», который вам все еще нужно «запустить»:

import akka.actor.ActorSystem;
import akka.stream.Materializer;
import akka.stream.ActorMaterializer;

// Create the blueprint:
RunnableGraph blueprint = ftp.to(Sink.foreach(s -> LOGGER.info(s.name())));

// Create the system to run the stream in:
ActorSystem system = ActorSystem.create();
Materializer materializer = ActorMaterializer.create(system);

// Run the stream:
blueprint.run(materializer);

Вы также можете использовать сокращение «runWith»:

ftp.runWith(Sink.foreach(s -> LOGGER.info(s.name())), materializer);

...