2013-06-19 5 views
0

FTP 클라이언트가 특정 FTP 서버에서 허용하는 동시 연결 수를 구할 수있는 방법이 있습니까? 또한 언제든지 사용할 수있는 연결 수는 무엇입니까?Java, FTP 및 여러 소비자

내 문제는 다음과 같습니다. 소비자가 데이터를 읽고 파일을 만들 때 대기열이 있습니다. 현재 대기열에 대해 3 명의 소비자 (Spring JMS 동시 사용자)가 있지만이 수가 증가하고 대기열을 수신하는 더 많은 서버가 추가됩니다.

소비자를 100으로 업데이트하면 연결에 오류가 발생합니다. 많은 소비자가 특정 서버로 ftp 할 수 있도록 디자인 패턴이나 라이브러리를 추천 할 수 있습니까? 예를 들어 100 개의 파일과 100 개의 소비자가있는 경우 각 소비자가 1 개의 파일을 ftp 할 수 있거나 10 개의 파일을 ftp 할 수 있다면 원하는 접근 방식이됩니다. 당신이 SFTP로 전환 할 수 있다면 나는 이것에 어떤 도움이 많이

을 감사 다수의 소비자 및/또는 서버

에 걸쳐 부하를 분할 할

감사 데미안은

답변

1

의 Jsch 라이브러리를 통해 여러 채널을 열어 지원 단일 물리적 연결.

그렇지 않으면 사용 가능한 클라이언트가없는 경우 FTP 클라이언트 풀을 구현하고 사용자를 차단할 수 있습니다. 소비자가 작업을 완료하면 클라이언트를 풀로 반환하고 대기중인 스레드를 깨운다. 단순한 BlockingQueue 만 있으면 될 것 같습니다.

대부분의 서버는 유휴 연결을 시간 초과합니다. 따라서 풀에서 서버를 가져올 때 끊어진 연결을 처리해야합니다.

마지막으로, 자신의 롤링 대신 스프링 통합을 사용하면 FTP 아웃 바운드 채널 어댑터는 풀링을 처리하는 CachingSessionFactory을 사용하도록 구성 할 수 있습니다.

+0

응답 주셔서 감사합니다 .. 게리 감사합니다. BlockingQueue는 작동하지만 두 개 이상의 서버가 대기열에서 읽는 경우 올바른 옵션이라고 생각하지 않습니다. – Damien

+1

참이지만 각 서버에서 연결을 제한 할 수 있습니다. –

+0

진정한 게리지만 최적일까요? ftp 서버가 10 개의 연결을 허용하면 각 서버에서 허용 할 연결 수를 현명한 방법으로 알 수 있습니까? 이상적으로 새로운 서버는 다른 서버에 대해 알지 못해도 시작할 수 있어야합니다. – Damien

관련 문제