当前位置: 首页 > news >正文

php连接rabbitmq例子

首先确保安装好了Rabbitmq服务器。

1.新建一个空白php项目,安装php客户端库:

composer require php-amqplib/php-amqplib

2.生产者

然后添加生产者代码 (producer.php)

<?php
require_once __DIR__ . '/vendor/autoload.php';use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;// 创建到RabbitMQ服务器的连接[1,2](@ref)
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();// 声明一个队列,如果不存在则创建[1,2](@ref)
$queueName = 'hello';
$channel->queue_declare($queueName, false, false, false, false);// 创建消息内容
$data = "Hello RabbitMQ! 时间: " . date('Y-m-d H:i:s');
$msg = new AMQPMessage($data);// 发送消息到队列[1,2](@ref)
$channel->basic_publish($msg, '', $queueName);
echo " [x] 发送消息: '$data'\n";// 关闭连接[1,2](@ref)
$channel->close();
$connection->close();

运行生产者:php producer.php

3.消费者

添加consumer.php。 消费者监听并处理队列中的消息:

<?php
require_once __DIR__ . '/vendor/autoload.php';use PhpAmqpLib\Connection\AMQPStreamConnection;// 创建到RabbitMQ服务器的连接[1,2](@ref)
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();// 声明同一个队列[1,2](@ref)
$queueName = 'hello';
$channel->queue_declare($queueName, false, false, false, false);echo " [*] 等待消息中. 按 CTRL+C 退出\n";// 定义处理消息的回调函数[1,2](@ref)
$callback = function ($msg) {echo " [x] 收到消息: ", $msg->body, "\n";
};// 开始消费队列中的消息[1,2](@ref)
$channel->basic_consume($queueName, '', false, true, false, false, $callback);// 持续监听消息[1,2](@ref)
while ($channel->is_consuming()) {$channel->wait();
}// 关闭连接(通常不会执行到这里)[1,2](@ref)
$channel->close();
$connection->close();

运行消费者:php consumer.php

4. 运行说明

  1. 确保 RabbitMQ 服务已启动
  2. ​先运行消费者​​:在终端执行 php consumer.php,它会持续运行并等待消息
  3. ​再运行生产者​​:另开终端执行 php producer.php,发送消息
  4. 观察消费者终端,会立即显示收到的消息

    

也可以在rabbitmq管理页面发送消息: 

如果没有消费者,就是不运行consumer.php, 发布消息之后,可以获取到消息 Get Message(s),

否则就是 Queue is empty。

5. 关键点说明

  • 队列声明​​:生产者和消费者都要声明相同的队列
  • •​​消息确认​​:本例使用自动确认模式(true参数),消息被接收后自动从队列删除
  • •​​持久化​​:如需消息持久化,需设置队列和消息的durable属性
  • •​​连接参数​​:根据实际修改主机、端口、用户名和密码

这是一个最基础的 RabbitMQ 使用示例。在实际项目中,你可能需要添加错误处理、消息持久化、手动确认等更多功能。

http://www.dtcms.com/a/359105.html

相关文章:

  • SpringCloud学习笔记
  • 大模型应用开发面试全流程实录:RAG、上下文工程与多Agent协作技术深度解析
  • ABAP 刷新屏幕
  • 【C++】日期类实现详解:代码解析与复用优化
  • BEV-VAE
  • 3000. 对角线最长的矩形的面积
  • 配置vsc可用的C语言环境
  • Linux系统统计用户登录和注销时间的工具之ac
  • Dify的搭建
  • Glato - AI 驱动的广告视频创作平台
  • [光学原理与应用-329]:ZEMAX - 主要用途与主要功能
  • Python爬虫实战:研究统计学方法,构建电商平台数据分析系统
  • Windows驱动开发与双机调试环境[驱动开发环境配置高阶]
  • [创业之路-582]:评估难易程度、重要程度,站在不同的角度有不同的答案
  • 第09章 t检验:两独立样本t检验
  • 【MCP系列教程】 Python 实现 FastMCP StreamableHTTP MCP:在通义灵码 IDE 开发并部署至阿里云百炼
  • 49.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--扩展功能--集成网关--Refit跨服务调用
  • java中的VO、DAO、BO、PO、DO、DTO
  • 操作系统-虚拟内存篇
  • 数据结构(顺序表力扣刷题)
  • 使用 Visio Viewer 查看 Visio 绘图文件
  • GEE中上传研究区域范围
  • 个性化导航新体验:cpolar让Dashy支持语音控制
  • 仓颉基于http调用DeepSeek
  • 【MySQL数据库】索引 - 结构 学习记录
  • Linux之Shell编程(三)流程控制
  • 知网文献高级检索方法
  • 防护墙技术(一):NAT
  • 如何调整Linux系统下单个文件的最大大小?
  • 2025年09月计算机二级Java选择题每日一练——第十二期