京东6.18大促主会场领京享红包更优惠

 找回密码
 立即注册

QQ登录

只需一步,快速开始

使用PHP和RabbitMQ实现消息队列功能

2024-11-4 07:12| 发布者: 284cc| 查看: 103| 评论: 0

摘要: 目次前言一、安装RabbitMQ二、安装PHP的AMQP扩展三、测试验证总结前言 本日我们来做个小试验,用PHP和RabbitMQ实现消息队列功能。 前期准备,需要安装好docker、docker-compose的运行环境。 使用docker摆设php服务的
目次

前言

本日我们来做个小试验,用PHP和RabbitMQ实现消息队列功能。

前期准备,需要安装好docker、docker-compose的运行环境。

使用docker摆设php服务的详细步骤_docker_脚本之家 (jb51.net)

一、安装RabbitMQ

1、创建相干目次,实行如下下令。

[code]mkdir -p /docker/rabbitmq/data cd /docker/rabbitmq[/code]

2、编写yaml文件,内容如下;version更换成自己的docker-compose版本。

[code]vim docker-compose.yaml version: '2.2.2' services: rabbitmq: image: rabbitmq hostname: rabbitmq container_name: rabbitmq ports: - "5672:5672" - "15672:15672" volumes: - ./data:/var/lib/rabbitmq networks: - mynet networks: mynet: name: mynet driver: bridge[/code]

3、启动rabbitmq,实行如下下令。

[code]docker-compose up -d[/code]

4、查抄服务是否正常运行,实行如下下令。

[code]docker-compose ps -a[/code]

返回如下内容,说明服务已正常启动,正在运行。

5、如果有服务启动失败,可以使用如下下令排查题目。

[code]docker logs rabbitmq[/code]

6、至此,rabbitmq安全完成并且已正常运行。

二、安装PHP的AMQP扩展

1、进入test1项目容器,实行如下下令。

[code]docker exec -ti test1 /bin/sh[/code]

2、下载AMQP扩展并且完成安装,实行如下下令。

[code]wget https://pecl.php.net/get/amqp-2.1.2.tgz tar -zxvf amqp-2.1.2.tgz cd amqp-2.1.2 /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config make && make install[/code]

3、修改php.ini设置,增长amqp扩展,内容如下。

[code]extension=amqp.so[/code]

4、查抄设置是否乐成,实行如下下令,有返回说明已完成安装。

[code]/usr/local/php/bin/php -m|grep amqp[/code]

5、重启PHP服务, 重启Web服务器或PHP-FPM服务以加载新安装的AMQP扩展。

6、至此,php的amqp扩展已完成安装。

三、测试验证

1、进入test1项目目次,实行如下下令。

[code]cd /docker/test1/html/[/code]

2、编写生产者,代码内容如下。

[code]vim producer.php <?php // 创建毗连到RabbitMQ服务器的毗连 $connection = new AMQPConnection( [ 'host' => 'rabbitmq', 'port' => 5672, 'username' => 'guest', 'password' => 'guest' ] ); $connection->connect(); // 创建一个频道(channel) $channel = new AMQPChannel($connection); // 声明一个交换机(exchange) $exchange = new AMQPExchange($channel); $exchange->setName('exchange_name'); $exchange->setType(AMQP_EX_TYPE_DIRECT); // 直接交换机范例 $exchange->declareExchange(); // 声明一个队列 $queue = new AMQPQueue($channel); $queue->setName('queue_name'); $queue->declareQueue(); // 绑定交换机到队列 $queue->bind('exchange_name', 'routing_key'); // 发送一条消息 $messageBody = 'Hello, RabbitMQ!'.(!empty($_GET['msg']) ? $_GET['msg'] : ''); $exchange->publish($messageBody, 'routing_key'); // 关闭毗连 $channel->close(); $connection->disconnect();[/code]

3、编写斲丧者,代码内容如下。

[code]vim consumer.php <?php // 创建毗连到RabbitMQ服务器的毗连 $connection = new AMQPConnection( [ 'host' => 'rabbitmq', 'port' => 5672, 'username' => 'guest', 'password' => 'guest' ] ); $connection->connect(); // 创建一个频道(channel) $channel = new AMQPChannel($connection); // 声明一个交换机(exchange) $exchange = new AMQPExchange($channel); $exchange->setName('exchange_name'); $exchange->setType(AMQP_EX_TYPE_DIRECT); // 直接交换机范例 $exchange->declareExchange(); // 声明一个队列 $queue = new AMQPQueue($channel); $queue->setName('queue_name'); $queue->declareQueue(); // 绑定交换机到队列 $queue->bind('exchange_name', 'routing_key'); // 开始斲丧消息 $queue->consume(function (AMQPEnvelope $envelope, AMQPQueue $queue) { if ($envelope->getBody()) { echo "Received message: ", $envelope->getBody(), "\n"; } }, AMQP_AUTOACK); // 如果设置为AMQP_AUTOACK,消息一旦收到就被认为已确认,否则需要手动确认 // 关闭毗连 $channel->close(); $connection->disconnect();[/code]

4、进入test1项目容器,监控斲丧者,实行如下下令。

[code]/usr/local/php/bin/php /usr/local/nginx/html/consumer.php[/code]

5、在宿主机发起一个生产者哀求,实行如下下令。

[code]curl "http://127.0.0.1:8081/producer.php?msg=max"[/code]

6、正常情况下,会在test1项目容器看到斲丧者的输出,类似如下截图。

7、至此,php和rabbitmq实现消息队列的功能已测试验证OK。

总结

用PHP和RabbitMQ实现消息队列功能,实在也不复杂,主要有以下几个步骤。

1、安装RabbitMQ。

2、安装PHP的AMQP扩展。

3、编写生产者、斲丧者举行验证。

上面的代码只是做个简朴的示例,如果运用到实际的项目当中需要做设置化、封装。

以上就是使用PHP和RabbitMQ实现消息队列功能的详细内容,更多关于PHP RabbitMQ消息队列的资料请关注脚本之家其它相干文章!


来源:https://www.jb51.net/program/318429bgm.htm
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
关闭

站长推荐上一条 /6 下一条

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2025-7-2 05:23 , Processed in 0.032282 second(s), 18 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

返回顶部