문제

내가 찾는 것은 일반적인 비동기 Java 작업 실행 framework 처리할 수 있는 Callables Runnables.그것은 비슷한 것을 java.util.concurrent.ExecutorService,(및 포장 ExecutorService어),하지만 그것은 또한 다음과 같은 기능이 있습니다.

  1. 는 능력을 지속하는 작업하는 경우에 데이터베이스 응용 프로그램을 내려가면서 작업되는 서비스,그리고 다시 시작할 수 있는 미완성 작업입니다.(나는 내 작업을 할 수 있습을 구현하는 Serializable 는 확인됩니다.)

  2. 작업 Uuid 사용하려면 클라이언트 작업을 얻을 토큰에 대해 문의 작업 상태입니다.(후드에서 이 정보를 유지하는 데이터베이스,뿐만 아니라.)

나는 작업을 시작이 자신에 의해 건물 주위에 ExecutorService, 지만,나는 것을 선호 상자,오픈 소스 솔루션,존재하는 경우.

수있는 무언가 내에서의 작업 Spring 프레임워크는 것이 이상적입니다.

도움이 되었습니까?

해결책

당신이 사용할 수있는 석영, 콘크리트를 만듭니다 Job a Runnable 또는 Callable. 석영' Job 인터페이스는 작업의 호출 사이에 일부 상태를 유지하는 기능을 추가합니다. 원하는 경우, Quartz는 직무와 주 상태를 관계형 데이터베이스에 내밀하게 저장하고 확장 가능한 호스트 클러스터에서 실행할 수 있습니다.

다른 팁

당신은보고 싶을 수도 있습니다 석영.

Quartz는 가장 작은 독립형 애플리케이션에서 가장 큰 전자 상거래 시스템에 이르기까지 거의 모든 J2EE 또는 J2SE 애플리케이션과 통합되거나 거의 모든 J2EE 또는 J2SE 애플리케이션과 함께 사용할 수있는 완전한 오픈 소스 작업 스케줄링 시스템입니다. 석영은 수십, 수백 또는 심지어 수천 개의 일자리를 실행하기위한 간단하거나 복잡한 일정을 만드는 데 사용될 수 있습니다. 작업이 표준 Java 구성 요소 또는 EJB로 정의되는 작업. Quartz 스케줄러에는 JTA 트랜잭션 및 클러스터링과 같은 많은 엔터프라이즈 급 기능이 포함되어 있습니다.

살펴보십시오 http://www.opensymphony.com/quartz/wikidocs/features.html 그리고 그것이 이미 당신을 위해 무언가가 있는지 확인하십시오.

그 페이지에서 :

포함 된 JDBCJOBSTORE를 사용하면 "비 휘발성"으로 구성된 모든 작업 및 트리거는 JDBC를 통해 관계형 데이터베이스에 저장됩니다.

다른 방향은 사용과 같은 것일 수 있습니다 테라코타, JVM에 힙을 클러스터링하고 가용성을 위해 유지할 수 있습니다. Terracotta는 통합을 지원합니다 석영 그것이 일정 관점에서 유용한 경우. 또한 마스터 노동자와 메시징이 있습니다 통합 모듈 그것은 또한 유용 할 수 있습니다. 테라코타는 오픈 소스입니다.

에 따라 알렉스의 포인트,테라코타 솔루션 않을 유지 귀하의 작업을 데이터베이스는,그들은 것에서 지속적 테라코타 분산된 메모리 저장소.

이 테라코타 지속의 메모리 저장을 디스크에,이것은 더 효율적으로 버전을 넣는 그 작업으로 데이터베이스입니다.

동일한 시간에,그것은 당신을 제공합니다 순수한 POJO 프로그래밍 모델,그래서 당신은 심지어를 처리해야 DB txns,ORM 과 같은 경우 특정 작업의 발생을 이야기하 DB(는 경우에는 테라코타 도움이 되지 않는 상처 당신은 여기에,그것은 단지는 데 도움이 배포하는 작업).

이 MasterWorker 패턴이 도움 당신이 배포하는 일에 그리드,그리고 당신이 할 수있는 매우 쉽게 사용하기 시작하 DistributedExecutorService,제출하는 작업에 다음과 같습니다:

CompletionService executor = new DistributedCompletionService(new DistributedExecutorService("myTopologyName"));
executor.submit(new MyRunnable(), null);
...
Future f = executor.take();

여기에 대한 링크를 퀵 스타트 가이드 마스터 작업자의 구현에서 테라코타 Forge.

무엇보다 테라 필요하지 않 구현하는 직렬화-할 수 있지만 당신이 원하는 경우:)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top