2012-01-12 2 views
2

저는 제작자가 메시지 브로커로 rabbitmq를 사용하여 트위터 스트림에서 읽고 작업을 대기열에 배치합니다.많은 작업이 타임 스탬프로 실행되도록 예약합니다.

작업은 일반적으로 실행하는 데 약 3-5 초가 걸리고 작업이 끝나면 작업이 완료되면 사용자에게 알립니다. 그러나 사용자에게 더 많은 메시지를 보내 작업이 완료된 후 10 분 30 분/60 분 후에 다시 알림을 보내고 싶습니다.

이러한 추가 메시지를 예약하는 가장 좋은 방법을 알 수 없습니다. 특정 타임 스탬프로 메시지 스크립트를 실행하는 cron 작업을 만드는 것을 생각했지만 시간당 수천 개의 작업이 잘못 처리 된 것으로 보입니다. 또 다른 아이디어는 데이터베이스를 폴링하거나 대기열에서 읽는 데몬을 실행하고 예정된 타임 스탬프와 현재 시간을 확인한 후 보내는 것입니다.

지연된 메시지를 통해 메시지 브로커 측에서 수행 할 수 있다면 이상적이지만 메시지를 훨씬 더 명확하게 만들 수 있지만 RabbitMQ는 그런 것을 지원하지 않습니다.

타임 스탬프로 실행해야하는 많은 작업을 예약하는 가장 좋은 방법은 무엇입니까?

+0

cron 작업이 나에게 맞는 옵션 인 것 같습니다. –

답변

1

매분마다 실행되는 단일 cron 작업을 작성하고 메시지를 보낼 시간 스탬프가있는 다른 대기열을 확인하십시오. 타임 스탬프가 지났을 때 메시지를 보내고 큐에서 항목을 제거하십시오.

+0

좀 더 세부적으로 원한다면 몇 초마다 크론 작업을 실행하여 지나치게 많습니까? 그보다 더 좋은 방법이 있습니까? –

+0

우선, 수면으로 비틀 거리지 않는 한 크론 작업을 1 분에 1 회 이상 실행할 수 없습니다. 각 메시지에 대해 cron 작업을 예약 할 필요가 없습니다. 한 번에 50 개의 메시지를 보내는 스크립트는 어떻게됩니까? – andrewtweber

관련 문제