0

FTPClient 有什么方法可以获取特定 ftp 服务器允许的同时连接数?还有随时可用的连接数?

我的问题如下我有一个队列,消费者将从中读取数据并创建一个文件。目前队列有 3 个消费者(Spring JMS 并发消费者),但这个数字会增加,并且会添加更多监听队列的服务器。

当我将消费者更新为 100 时,我收到连接失败的错误消息。任何人都可以推荐一种设计模式或库,以允许任意数量的消费者通过 ftp 访问特定的服务器。例如,如果有 100 个文件和 100 个消费者,如果每个消费者可以 ftp 1 个文件或一些可以 ftp 10 个文件等,这将是所需的方法。我想在多个消费者和/或服务器之间分配负载

对此的任何帮助都非常感谢

谢谢达米安

4

1 回答 1

1

如果可以切换到 SFTP,Jsch 库支持通过单个物理连接打开多个通道。

否则,您可以实现一个 FTP 客户端池,如果没有可用的客户端,则阻止消费者。当消费者完成其操作时,将客户端返回到池中并唤醒所有等待的线程。一个简单BlockingQueue的可能就是您所需要的。

但是,大多数服务器会超时空闲连接,因此在从池中获取连接时,您必须处理断开的连接。

最后,如果您使用 Spring Integration 而不是自己滚动,则可以将 FTP 出站通道适配器配置为使用 a CachingSessionFactory,它会为您处理池。

于 2013-06-19T12:03:00.607 回答