2011-12-20 2 views
4

RabbitMQ를 사용하는 PHP 프로젝트 (Symfony2)가 있습니다. 나는 간단한 메시지 대기열을 사용하여 일부 작업 (메일, API의 중요한 데이터 전송)을 지연시킵니다. 소비자는 웹 서버에서 실행되며 코드는 웹 서버 레포의 일부입니다. 이들은 웹과 동일하게 배포됩니다.RabbitMQ + PHP 배치 전략

질문은 다음과 같습니다. 소비자를 데몬으로 시작하고 항상 소비자가 실행되는지 확인하려면 어떻게합니까? 앱을 배포 할 때 소비를 중지하지만 시작한 메시지의 처리가 완료되도록 소비자를 "정상적으로"종료하려면 어떻게해야합니까?

배포가 중요 할 경우 저는 Capifony를 사용합니다.

감사합니다.

답변

2

파이썬으로 작성된 supervisord을 살펴볼 가치가 있습니다. 저는 이전에 RabbitMQ를 사용하는 것과 비슷한 역할을하는 작업 대기열 인 Gearmand의 작업자를 위해 사용했습니다.

+0

매우 유망한 것으로 보입니다.하지만 소비자를 정상적으로 종료시키는 (즉, 죽이지는 않음) 한 가지 중요한 문제는 해결하지 못합니다. 나는 그 문제를 해결하려고 노력할 것이다. – gphilip

+0

아아아, PHP 작업자가 특정 시스템 신호를 듣고받은 후에는 현재 작업을 마친 후에 종료 할 것이라고 생각했습니다. 수퍼바이저는 Kill -9 등가물이 아닌 다른 신호를 보내도록 구성 할 수 있습니다. –

+0

이것은 나에게 좋은 소리. 나는 그걸로 갈거야. 고맙습니다! – gphilip