Java,FTP和多个消费者

时间:2013-06-19 11:04:43

标签: java design-patterns ftp ftp-client spring-jms

是否有任何方法使用FTPClient获取特定ftp服务器允许的同时连接数?还有任何时候可用的连接数量?

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

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

非常感谢任何帮助

由于 达明

1 个答案:

答案 0 :(得分:1)

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

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

但是,大多数服务器都会超时空闲连接,所以当你从池中获取连接时,你必须处理断开的连接。

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