현재 실행 중인 태스크 식별
태스크가 실행될 때, 태스크가 완료될 때까지 태스크 데이터베이스 레코드가 잠깁니다. 태스크의 실행 여부를 판별합니다.
이 태스크 정보
버전 6.0.2 이전에는 모든 태스크가 단일 글로벌 트랜잭션으로 실행되었습니다. 이 프로세스로 인해 태스크가 두 번 이상 실행되지 않고 태스크 상태를 읽을 때 모든 시도가 차단됩니다. 이는 각 태스크가 읽기 커미트 트랜잭션 격리를 사용했기 때문입니다.
태스크의 실행
중 여부를 판별하는 두 가지 메소드가 있습니다.
- NotificationSink
NotificationSink EJB는 TaskInfo 오브젝트에서 setNotificationSink 메소드를 사용하여 태스크에 설정할 수 있습니다. 그러면 NotificationSink Bean은 태스크의 라이프사이클을 별도의 데이터베이스 레코드에 사용자 정의 테이블로 로깅할 수 있습니다. 그러면 스케줄러와 독립적으로 조회할 수 있는 태스크의 히스토리 로그가 생성됩니다. 이 솔루션은 스케줄러 서비스의 모든 버전에 대해 작동합니다. 세부사항은 스케줄러 알림 수신 주제를 참조하십시오.
- 지연된 실행 및 커미트되지 않은 읽기
버전 6.0.2 이상에서 두 가지 동작은 차단 없이 태스크의 현재 상태를 볼 수 있도록 스케줄러 찾기 및 검색 API 메소드(예: getTask, getTaskStatus 또는 findTasksByName)를 사용 가능하게 합니다. 커미트되지 않은 실행 상태를 포함하여 태스크의 현재 상태를 보려면 다음 단계를 완료하십시오.