2017-12-29 5 views
1

생성 된 항목 (이벤트) 목록이있는 유스 케이스가 있습니다.대기열에서 작업 예약

정기적으로 (30 초와 같이) 처리해야합니다.

대기열을 사용하여 이벤트를 저장하고 스케쥴러에서 항목을 하나씩 처리 한 다음 다시 대기열로 밀어 넣어 다시 처리합니다.

이 방법에는 두 가지 문제점이 있습니다.

  1. 대기열은 결코 비어 있지 않으므로 스케줄러는 무한 루프 상태입니다.
  2. 여러 유사한 프로세스에서 비율을 조정할 수 없습니다.

도와주세요.

저는 스프링 부트를 사용하고 있습니다. 그들은 프로그램 적으로 제거 될 때까지 처리해야합니다.

+0

어떤 프레임 워크를 사용하고 있습니까? 또한 대기열로 다시 밀어 넣어야한다고 말하면 몇 번 다시 처리해야합니까? – randomUser56789

+0

업데이트 된 질문 –

+0

무슨 뜻인가요? : 여러 유사한 프로세스에서 확장 할 수 없습니다. 여러 서버를 의미합니까? – user641887

답변

1

경우 다음과 같이 내가 할 것입니다 후 별도의 제 3 자 도구를 통합 할 수 있습니다 프로젝트 :

큐를 들어 내가 모든 스프링 부팅 응용 프로그램과 같은 확장 문제를 해결하는 것입니다 (백업 복제본) RabbitMq을 사용하십시오 RabbitMq에 쉽게 가입 할 수 있습니다.

30 초 지연으로 말하면, 여러 가지 방법으로 수행 할 수 있습니다. 예를 들어 프로그래밍 방식으로 30 초 동안 메시지를 "차단"한 다음 메시지를 다음 '임의의'소비자가 소비 할 큐로 되돌릴 수 있습니다.

다른 옵션은 RabbitMq 지연 플러그인을 사용하는 것입니다. 이 플러그인에 대한 자세한 내용은 here을 참조하십시오. 본질적으로 메시지는 교환기에서 X 초 동안 대기하여 대기열에 들어가면 소비자가 처리합니다.

+0

감사합니다. 플러그인은 목적을 정확하게 제공합니다. –

+0

좋은 제안 –