关于php:phpRabbit简单队列实现

3次阅读

共计 906 个字符,预计需要花费 3 分钟才能阅读完成。

RabbitMQ 介绍


RabbitMQ 是一个开源的音讯代理和队列服务器,用来通过一般协定在齐全不同的利用之间共享数据,或者简略的将作业排队以便让分布式服务器进行解决。

1. 装置 RabbitMQ
我这里应用的是 docker 装置

docker run -d  --name some-rabbit -p 5672:5672 -p 15672:5672 -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password rabbitmq:3-management

运行后可输出 http://localhost:15672 登录 RabbitMQ web 治理后盾

默认账号:guest
明码:guest

我这里用的是 php thinkphp6 框架
用 compose 解决依赖治理

composer require php-amqplib/php-amqplib

Rabbit 外面有几个概念须要先理解的
生产者:发送音讯端
消费者:音讯生产端
信通:信道是生产消费者与 rabbit 通信的渠道,生产者 publish 或是消费者 subscribe 一个队列都是通过信道来通信的。

信道是建设在 TCP 连贯上的虚构连贯,就是说 rabbitmq 在一条 TCP 上建设成千盈百个信道来达到多个线程解决,这个 TCP 被多个线程共享,每个线程对应一个信道,信道在 rabbit 都有惟一的 ID , 保障了信道公有性,对应上惟一的线程应用。

RabbitMQ 为什么须要信道?为什么不是 TCP 间接通信?

  1. TCP 的创立和销毁,开销大,创立须要三次握手,销毁须要四次离别
  2. 如果不应用信道,那么援用程序就会应用 TCP 的形式连贯到 rabbitmq,顶峰时每秒成千上万条连贯会造成资源的微小节约(一条 tcp 耗费资源,成千上万的 tcp 会十分耗费资源),而且操作系统每秒解决 TCP 连贯数量也是无限的,必定会造成性能瓶颈

3. 信道的原理是一条线程一条信道,多条线程多条信道独特应用一条 TCP 连贯。一条 TCP 连贯能够包容有限的信道,及时每秒造成成千上万的申请也不会造成性能瓶颈

这里咱们先实现简略的 hello world 模式
实现生产者:

实现消费者:

运行消费者脚本

申请生产者连贯
此时消费者脚本打印消息:

正文完
 0