우리는 PHP 애플리케이션 용 메시지 대기열을 구현할지 여부를 논의하고 있습니다. 현재 우리는 Apache의 ActiveMQ를보고 있습니다. 우리가 완전히 명확하지 않은 한 가지는 큐에 도착하는 메시지를 기반으로 프로세스를 트리거 할 수 있는지 여부입니다.메시지 큐 : 메시지가 큐에 들어갈 때 이벤트를 트리거 할 수 있습니까?
지금까지 발견 한 문학은 메시지 대기열이 풀 기반 메커니즘임을 나타냅니다. 프로세스는 정기적으로 (데몬 또는 cron으로) 실행되고 수신 메시지를 대기열에서 가져옵니다. 이것을 푸시 메커니즘으로 전환 할 수 있습니까? 즉, 메시지 큐가 실제로 메시지가 도착할 때 HTTP 요청 (또는 프로세스)을 시작하게하는 방법이 있습니까? 우리가 찾은 옵션 중 하나는 Publish/Subscribe 모델입니다. 그러나 이것은 약간의 kludge처럼 느껴지는 ActiveMQ 인스턴스에 대한 개방형 (TCP) 연결을 유지하기 위해 PHP 응용 프로그램을 무한 루프로 실행해야합니다.
모든 입력 사항을 보내 주시면 감사하겠습니다.
좋은 질문입니다. 우리가 MQ를 고려하는 이유는 애플리케이션이 프로세스의 다음 단계가 무엇인지를 비즈니스 로직이 지시하는 유연한 워크 플로우쪽으로 이동하기 때문입니다. 메시지 대기열에서 지원하는 "휴지통"패러다임을 사용하는 것은 당연한 것처럼 보입니다. – kander
청취 소비자는 kludge로 간주되는 부분이 아닙니다. 매우 건전한 아키텍처처럼 들립니다. while (1) {$ client-> fetch(); } 바람직하지 않은 구조. – kander
나는 본다. 필자의 개인 의견은 PHP 소비자 데몬을 재검토해야한다는 것입니다. 모든 메시지가 소비자를 유발할 경우 MQ를 사용하는 것이별로 중요하지 않습니다. (1,000,000 개의 메시지가 동시에 도착하면 어떻게됩니까?) - 생산자로부터 소비자 코드를 호출 할 수 있습니다. 그럴 경우. – aib