[SPRING] Quartz Scheduler : 모든 클러스터 노드에서 일부 작업을 트리거하고 클러스터마다 한 번만 트리거합니다.
SPRINGQuartz Scheduler : 모든 클러스터 노드에서 일부 작업을 트리거하고 클러스터마다 한 번만 트리거합니다.
쿼츠 스케줄러를 클러스터 환경에서 Spring 빈으로 사용하고 있습니다.
@ NotConcurrent 주석이 달린 작업이 몇 개 있으며 클러스터 당 한 번 (즉 한 노드에서만 한 스레드에서만) 실행됩니다.
이제 클러스터의 모든 노드에서 하나의 작업을 실행해야합니다. @NotConcurrent 주석을 제거했지만 한 컴퓨터의 모든 스레드에서만 실행됩니다. 다른 노드에서 해고 당하지 않습니다.
작업에 주석을 달려면 어떻게해야합니까?
예 : Job1 주석이 달린 NotConcurrent가 자정에 스케쥴 됨 => 자정마다 한 대의 기계에서만 실행됩니다. 자정에 주석이 달린 Job2 => 자정마다 모든 머신에서 실행됩니다.
고맙습니다.
해결법
-
==============================
1.AFAIK Quartz 작업은 Quartz가 선택한 단일 노드에서 항상 실행된다. @NonConcurrent 어노테이션은 Quartz가 특정 노드에서 동시에 같은 작업을 수행하는 것을 방지한다.
AFAIK Quartz 작업은 Quartz가 선택한 단일 노드에서 항상 실행된다. @NonConcurrent 어노테이션은 Quartz가 특정 노드에서 동시에 같은 작업을 수행하는 것을 방지한다.
즉, Quartz가 여러 노드에서 동시에 작업을 실행하도록 만들 수 없습니다. 작업을 실행하기 위해 항상 하나의 노드를 선택합니다.
설명하는 것을 실현하려면 동일한 작업 클래스를 사용하고 연관된 트리거없이 여러 작업이 필요할 수 있습니다. 그런 다음 원격으로 연결하는 일종의 오케스트레이터 작업을 구현해야합니다. JMX 또는 RMI를 통해 개별 노드로 이동하고 수동으로 작업을 트리거합니다.
QuartzDesk (www.quartzdesk.com)에서 Quartz 스케쥴러 인스턴스에 연결할 수있는 단일 종단점을 제공하는 웹 서비스를 제공하고이를 통해 작업을 트리거 할 수있다.
from https://stackoverflow.com/questions/23665688/quartz-scheduler-trigger-some-jobs-on-every-cluster-node-and-some-only-once-per by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 방법 - Spring IoC 및 HttpClient 4.3.1 CloseableHttpClient? (0) | 2019.03.29 |
---|---|
[SPRING] 애스펙트 클래스의 클래스 변수 액세스 (0) | 2019.03.29 |
[SPRING] Spring 4에서 register-defaults = "false"와 같은 것은 무엇입니까? (0) | 2019.03.29 |
[SPRING] 스프링 보안 로그 아웃이 j_spring_security_logout으로 이동합니다. (0) | 2019.03.29 |
[SPRING] 포스트 구조로 봄 콩 테스트하기 (0) | 2019.03.29 |