검색에 대한 일반적인 비동기 Java 작업 실행 Framework/라이브러리
-
03-07-2019 - |
문제
내가 찾는 것은 일반적인 비동기 Java 작업 실행 framework 처리할 수 있는 Callable
s Runnable
s.그것은 비슷한 것을 java.util.concurrent.ExecutorService
,(및 포장 ExecutorService
어),하지만 그것은 또한 다음과 같은 기능이 있습니다.
는 능력을 지속하는 작업하는 경우에 데이터베이스 응용 프로그램을 내려가면서 작업되는 서비스,그리고 다시 시작할 수 있는 미완성 작업입니다.(나는 내 작업을 할 수 있습을 구현하는
Serializable
는 확인됩니다.)작업 Uuid 사용하려면 클라이언트 작업을 얻을 토큰에 대해 문의 작업 상태입니다.(후드에서 이 정보를 유지하는 데이터베이스,뿐만 아니라.)
나는 작업을 시작이 자신에 의해 건물 주위에 ExecutorService
, 지만,나는 것을 선호 상자,오픈 소스 솔루션,존재하는 경우.
수있는 무언가 내에서의 작업 Spring 프레임워크는 것이 이상적입니다.
다른 팁
당신은보고 싶을 수도 있습니다 석영.
Quartz는 가장 작은 독립형 애플리케이션에서 가장 큰 전자 상거래 시스템에 이르기까지 거의 모든 J2EE 또는 J2SE 애플리케이션과 통합되거나 거의 모든 J2EE 또는 J2SE 애플리케이션과 함께 사용할 수있는 완전한 오픈 소스 작업 스케줄링 시스템입니다. 석영은 수십, 수백 또는 심지어 수천 개의 일자리를 실행하기위한 간단하거나 복잡한 일정을 만드는 데 사용될 수 있습니다. 작업이 표준 Java 구성 요소 또는 EJB로 정의되는 작업. Quartz 스케줄러에는 JTA 트랜잭션 및 클러스터링과 같은 많은 엔터프라이즈 급 기능이 포함되어 있습니다.
살펴보십시오 http://www.opensymphony.com/quartz/wikidocs/features.html 그리고 그것이 이미 당신을 위해 무언가가 있는지 확인하십시오.
그 페이지에서 :
포함 된 JDBCJOBSTORE를 사용하면 "비 휘발성"으로 구성된 모든 작업 및 트리거는 JDBC를 통해 관계형 데이터베이스에 저장됩니다.
에 따라 알렉스의 포인트,테라코타 솔루션 않을 유지 귀하의 작업을 데이터베이스는,그들은 것에서 지속적 테라코타 분산된 메모리 저장소.
이 테라코타 지속의 메모리 저장을 디스크에,이것은 더 효율적으로 버전을 넣는 그 작업으로 데이터베이스입니다.
동일한 시간에,그것은 당신을 제공합니다 순수한 POJO 프로그래밍 모델,그래서 당신은 심지어를 처리해야 DB txns,ORM 과 같은 경우 특정 작업의 발생을 이야기하 DB(는 경우에는 테라코타 도움이 되지 않는 상처 당신은 여기에,그것은 단지는 데 도움이 배포하는 작업).
이 MasterWorker 패턴이 도움 당신이 배포하는 일에 그리드,그리고 당신이 할 수있는 매우 쉽게 사용하기 시작하 DistributedExecutorService,제출하는 작업에 다음과 같습니다:
CompletionService executor = new DistributedCompletionService(new DistributedExecutorService("myTopologyName"));
executor.submit(new MyRunnable(), null);
...
Future f = executor.take();
여기에 대한 링크를 퀵 스타트 가이드 마스터 작업자의 구현에서 테라코타 Forge.
무엇보다 테라 필요하지 않 구현하는 직렬화-할 수 있지만 당신이 원하는 경우:)