2014-10-03 2 views
0

나는 RabbitMQ를 배워서 친구에게 동적 피드를 제공하는 페이스 북과 매우 흡사하여 "동적 메시지"업데이트를 사용자에게주는 것을 생각했습니다. 사용자가 내가 대기열을 갖는 이름을 생성합니다 생성 될 때마다동적 메시지 업데이트를위한 RabbitMQ PHP

  1. 는 사용자의 userId를 그렇게 이름이 "100_message_queue"를 수 대기열 (userId_message_queue)입니다 :

    내 아이디어였다.

  2. Producer는이 큐의 모든 업데이트를 푸시합니다.

  3. 클라이언트 측 (자바 스크립트)에서 "GET http://example.com/getliveupdates/100"과 같은 REST API를 호출하면 모든 새 업데이트를 100_message_queue에서 가져 와서 응답으로 보냅니다.

나는 RabbitMQ php 튜토리얼을 읽었지 만 이것이 가능한 방법을 알아낼 수 없습니까? 더욱이 소비자는 영원히 계속 실행되므로 REST 요청을 할 수없는 것처럼 보입니다. 나에게 타임 아웃을주고있다.

이러한 종류의 구조를 구현하는 방법에 대한 아이디어가 있습니까? 당신은 웹 클라이언트에 메시지를, 나는 Web STOMP RabbitMQ 플러그인과 MQTTSTOMP에 보는 것이 좋습니다 것을 제공 할 계획으로

감사

+1

대기열을 폴링하고 있지만 서버 푸시를 원하십니까? –

답변

1

. 당신에게 WebSocket을 통해 그들의 힘을 적용하는 완벽한 솔루션이어야합니다. 실시간 메 시징을 제공합니다. 실시간 메시징은 항상 프로이며 원하는 내용 일 수 있습니다. 영원히 소비자 실행 처리에 관해서는

: 당신이 php-amqp 확장자를 사용하는 경우 몇 가지 작은 값으로 read_timeout 옵션을 설정할 수 있습니다

을, 그래서 소비자가 기다리는 대기열에서 모든 메시지를 얻을 때, 1 (초)을 말한다 1 초. 새 메시지에 대한 자세한 내용은 다음 예외 (나는 추측 AMQPConnectionException, 추한 솔루션,하지만 이것은 지금은 어떻게 완료)입니다.

또는 메시지가 남아 있지 않을 때까지 대기열의 메시지를 AMQPQueue::get 수 있습니다.

php-amqplib과 동일해야합니다. 최소한 아이디어는 여전히 동일해야합니다. 소비자가 시간 경과에 따라 새 메시지를 기다리거나 반복적으로 대기열에서 메시지를 가져 오도록 제한하십시오.