2012-07-23 3 views
1

그래서 나는 resque-lock이 작업이 대기열에 들어가는 것을 막고 있다고 생각했습니다. 하지만 큐 전체를 채우고 싶으면 특정 상황이 잠길 때 다시 큐업을 원합니다. 이를 정리하려면 대기열이 여러 호스트 (예 : google.com, yahoo.com, yahoo.com 및 apple.com)로 구성되어 있기 때문에 동일한 호스트 중 두 명이 다른 직원으로 들어가는 것을 원하지 않습니다. 같은 시간! 어떻게해야합니까? 나는 resque-lock 작업을하고 있지만이 문제에 도움이 될 것이라고는 생각하지 않습니다.Ruby Resque는 비슷한 작업이 이미 실행 중일 때 다시 시작 하시겠습니까?

예 :

대기열 :

google.com 
yahoo.com 
apple.com 
apple.com 
stackoverflow.com 

노동자 :

  • 이 명 노동자들이 일자리를 찾고 찾을 수있다 : (좋아) google.com과 yahoo.com을
  • 2 명의 근로자가 새로운 직업을 찾고 있습니다. apple.com 및 apple.com
  • 괜찮 아니, 대기열에 다시 두 번째 apple.com 작업을 넣어

resque이 동작을하는 방법에 어떤 아이디어를 계속? 본인의 사례는 2 명의 근로자를 대상으로 상황을 설명했지만 주된 아이디어는 근로자의 양에 관계없이 같은 주인을 가진 두 개의 직업이 동시에 실행할 수 없어야한다는 것입니다. 실행이 허용되지 않는 작업은 대기열에 다시 저장해야합니다.

답변

1

resque::workers::lock라고하는이 플러그인에 대한 내 자신의 resque 플러그인을 만들었습니다.

+0

질문 : 작업을 다시 대기열에 추가 할 때 대기열의 원래 위치와 동일한 위치로 다시 이동합니까? 끝까지 이동합니까? – Tilo

+0

@Tilo 끝까지 가야합니다. 그렇지 않으면 다른 작업이 처리되도록 변경되지 않습니다. – bartolsthoorn

+0

비슷한 문제가 있지만 모든 작업 (잠금 값이 동일한)은 들어오는 순서대로 처리해야하는 부분 데이터가 포함되어 있기 때문에 정렬 순서를 유지해야합니다. – Tilo

관련 문제