2014-04-15 4 views
3

작업이나 대기열/튜브 수준에서 우선 순위가 작동하는지 다소 혼란 스럽습니다. 내가 묻는 이유는 내가 Drupal에서 beanstalkd 통합 모듈을 사용하고 있기 때문이다. 이 모듈을 사용하면 대기열/튜브를 정의하고 생성 된 각 대기열/튜브에 우선 순위 값을 지정할 수 있습니다.Beanstalkd의 대기열/튜브에서 우선 순위가 작동합니까?

내가 해결하려고하는 것은 다음과 같습니다. Beanstalkd (대기열 A와 대기열 B)에 두 개의 대기열/튜브가 있다고 가정 해 봅시다. 대기열 A에 할당 된 항목의 우선 순위가 대기열 B에있는 항목보다 높으면 대기열 B에있는 항목은 대기열 A가 비어있을 때만 처리됩니까?

+0

다양한 우선 순위에 약간의 대기열을 채우는 작은 스크립트를 작성하는 시도 해 봤나와 튜브 및 작업을보고하고 다른 곳을 뽑아, 그 결과를 인쇄 할 수 있습니까? 그것은 어느 쪽이든 그것을 증명할 것입니다. –

답변

1

우선 순위는에서 이것에 대해 더 읽을 수, 작업 당입니다 : 작업 우선 순위없이 https://github.com/kr/beanstalkd/blob/master/doc/protocol.txt

을 beanstalkd는 FIFO 큐로 작동합니다.

작업의 우선 순위에 대해 알 수있는 3 개 개의 하드 사실이 있습니다 : 우선 순위가 낮은 번호

  • 작업은 우선 순위가 높은 번호 일 전에 예약되어 있습니다.
  • beanstalkd 우선 순위는 32 비트 부호없는 정수 (0-2^32-1 범위)입니다.
  • beanstalkd는 기본 작업 우선 순위 (beanstalkd.DEFAULT_PRIORITY)로 2^31을 사용합니다 (클라이언트가이 값을 무시할 수 있으며 기본값은 1024로 설정 됨).

동일한 우선 순위 내에서 여전히 작업은 FIFO 방식으로 처리됩니다. 따라서 여러 개의 튜브를 감시하는 에이전트가 있고이 튜브에서 우선 순위가 같은 작업을 수행하면 FIFO 방식으로 예약됩니다.

당신은 https://github.com/ptrofimov/beanstalk_console