RabbitMQ 및 Redis를 사용하여 PHP에서 메시지 대기열을 구현하는 데 건축 차이로 인해 다양한 접근법이 포함됩니다. RabbitMQ는 AMQP 프로토콜을 구현하는 강력하고 기능이 풍부한 메시지 브로커이며, Redis는 큐 기능을 갖춘 더 간단한 메모리 데이터 저장소를 제공합니다.
RabbitMQ를 사용하여 구현하는
Composer는 PHP-AMQPLIB/PHP-AMQPLIB>.
메시지를 보내고받는 기본 예는 다음과 같습니다.
<code class="php"> // 메시지 보내기 $ connection = new amqpConnection ([ 'host'= & gt; '로그인'= '게스트'= & gt; $ 채널 = $ connection- & gt; 채널 (); $ 채널-& gt; queue_declare ( 'my_queue', false, false, false, false); $ message = 'Hello World!'; $ channel- & gt; basic_publish (새 amqpmessage ($ message), '', 'my_queue'); $ 채널-& gt; close (); $ connection- & gt; close (); // 메시지 수신 $ connection = new amqpConnection ([ 'host'= & gt; 'localhost', 'port'= & gt; 5672, 'login'= & gt; 'guest', 'password'= & gt; 'guest', 'vhost'= & gt; '/']); $ 채널 = $ connection- & gt; 채널 (); $ 채널-& gt; queue_declare ( 'my_queue', false, false, false, false); $ Callback = function ($ msg) {echo & quot; [x]는 ", $ msg- & gt; body,"\ n "을 받았다. $ msg- & gt; delivery_info [ 'Channel']-& gt; basic_ack ($ msg- & gt; delivery_info [ 'delivery_tag']); }; $ channel- & gt; basic_consume ( 'my_queue', '', false, false, false, false, $ 콜백); while (count ($ 채널-& gt; 콜백)) {$ channer- & gt; wait (); } $ 채널-& gt; close (); $ connect-& gt; close (); </code>
Redis로 구현 :
predis/predis
라이브러리가 필요합니다. Composer를 사용하여 설치하십시오 : Composer는 predis/predis
.
regis 목록을 큐로 사용하는 기본 예는 다음과 같습니다. $ redis- & gt; rpush ( 'my_queue', 'Hello World!'); // 메시지를 받기 $ message = $ redis- & gt; lpop ( 'my_queue'); if ($ message! == null) {echo & quot; [x] 수령 : "quot; . $ 메시지. "\ n" }
RabbitMQ와 Redis는 다양한 사용에 대한 적합성에 영향을 미치는 것입니다. 사례.
기능 | rabbitmq | redis | 아키텍처 | 분산 메시지 중개인, amqp protocol | 대기열지속성 | 영구 메시지 저장소 (구성 가능) | 인 메모리, 서버 재시작에서 분실 된 데이터 (끈기를 위해 구성되지 않는 한) | | 라우팅, 교환, 메시지 우선 순위, 보장 전달 | 간단한 대기열, 고급 라우팅 없음 | 확장 성 | 고도로 확장 가능하며 높은 메시지 볼륨 | 매우 높음을 처리합니다. 처리량 | 복잡성 | 설정 및 관리가 더 복잡한 | 설정 및 사용이 쉬운 |
---|---|---|
메시지 순서가 중요하지 않은 경우, 데이터 손실이 허용되는 경우 |
위 내용은 PHP에서 메시지 대기열 (Rabbitmq, Redis)을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!