消息队列 php消费者,php使用消息队列rabbitmq

消息队列

顾名思义,消息队列就是消息传送接收的队列,既然是队列就是先进先出,前面的消息消费或者接收之后,后面的消息才能被接收或者消费。

消息队列的用途

代码解耦

异步通知

流量削峰

日志处理

代码解耦

通过消息队列,将彼此紧密关联的代码拆分开,彼此只需要依赖消息队列即可,不需要处理彼此之间的依赖。

异步通知

所有的消息只要发送到消息队列之后,就认为消息投递成功,至于消息接收者什么时候接收和处理消息,生产者不需要关心。也就是消息被消费了是异步通知到生产者的。

流量削峰

并发的时候,我们为了尽可能提高吞吐量,我们需要将耗时的操作尽量异步操作,比如发送短信,发送邮件,同步通知等内容,我们把他们放到消息队列中之后,我们的应用的吞吐量会大大提升。

日志处理

每个应用每时每刻都在产生大量的日志。而我们可能会有多个应用,面对着海量的日志,我们需要一个可以高吞吐量的存储分析系统,而消息队列就可以帮助我们进行日志处理。

RabbitMQ安装

安装erlang

rabbitmq的安装依赖erlang环境,所以我们需要先安装erlang环境,配置环境变量,当可以在命令行控制台通过erl访问eshell的时候,表明我们的erlang环境安装成功。

安装rabbitmq

在erlang安装之后,我们可以安装rabbitmq,rabbitmq的安装也是比较简单的,我们只需要去官网下载二进制文件包,解压之后,将sbin目录配置到环境变量中即可。当我们通过控制台输入rabbitmq-server可以启动的时候,表明我们的rabbitmq安装配置成功。

PHP配置RabbitMQ依赖

安装socket扩展

使用composer进行rabbitmq依赖安装

composer require "php-amqplib/php-amqplib"

PHP操作rabbitmq的简单示例

生产者

require_once __DIR__ . "/vendor/autoload.php";

//引入连接和消息类

use PhpAmqpLib\Connection\AMQPStreamConnection;

use PhpAmqpLib\Message\AMQPMessage;

//创建socket连接

$connection = new AMQPStreamConnection("localhost", 5672, 'guest', 'guest');

//创建连接频道

$channel = $connection->channel();

//声明队列

$channel->queue_declare('hello', false, false, false, false);

//创建消息

$msg = new AMQPMessage("测试中文~");

//发送消息到队列

$channel->basic_publish($msg, '', 'hello');

echo " [x] Sent 'Hello World!'\n";

//关闭连接

$channel->close();

$connection->close();

消费者

require_once __DIR__ . '/vendor/autoload.php';

//引入连接类

use PhpAmqpLib\Connection\AMQPStreamConnection;

//创建连接

$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');

//创建频道

$channel = $connection->channel();

//声明队列

$channel->queue_declare('hello', false, false, false, false);

echo " [*] Waiting for messages. To exit press CTRL+C\n";

$callback = function ($msg) {

echo ' [x] Received ', $msg->body, "\n";

};

//监听队列,消费消息

$channel->basic_consume('hello', '', false, true, false, false, $callback);

while ($channel->is_consuming()) {

$channel->wait();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值