phpamqp(php amqp consumer)
phpamqp
简介
phpamqp 是一个 PHP 扩展,它提供了一个 AMQP (高级消息队列协议) 客户端。AMQP 是一种工业标准协议,用于在分布式系统中可靠且高效地发送和接收消息。phpamqp 允许 PHP 开发人员轻松地与 AMQP 代理(如 RabbitMQ、Apache Qpid 和 Amazon MQ)交互。
安装
使用 PECL 安装 phpamqp:``` Bash pecl install phpamqp ```然后,启用扩展:``` Bash echo "extension=amqp.so" > /etc/php/7.4/mods-available/amqp.ini systemctl restart php7.4-fpm ```
用法
phpamqp 提供了一个面向对象的 API 来处理 AMQP 操作。以下是连接到 AMQP 代理的基本示例:``` PHP use PhpAmqpLib\Connection\AMQPStreamConnection;$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest'); $channel = $connection->channel(); $channel->queue_declare('my_queue', false, false, false, false); ```
多级标题
发布消息
``` PHP $channel->basic_publish('Hello, world!', '', 'my_queue'); ```
消费消息
``` PHP $callback = function ($msg) {echo 'Received message: ', $msg->body, PHP_EOL; }; $channel->basic_consume('my_queue', '', false, true, false, false, $callback); ```
取消订阅
``` PHP $channel->basic_cancel('consumer_tag'); ```
关闭连接
``` PHP $channel->close(); $connection->close(); ```
内容详细说明
### 配置选项phpamqp 允许您通过 `AMQPStreamConnection` 构造函数自定义连接配置:
host:
代理主机名或 IP 地址
port:
代理端口
user:
代理用户名
password:
代理密码
vhost:
虚拟主机### 发布确认phpamqp 支持发布确认。您可以通过设置 `mandatory` 为 `true` 来启用发布确认:``` PHP $channel->basic_publish('Hello, world!', '', 'my_queue', true, null); ```如果消息无法发送到队列,则 AMQP 代理将返回一个否定确认。### 事务phpamqp 支持事务。您可以通过调用 `channel->tx_select()` 启动事务,并在完成操作后调用 `channel->tx_commit()` 或 `channel->tx_rollback()`:``` PHP $channel->tx_select(); // 执行操作 $channel->tx_commit(); ```### 错误处理phpamqp 会引发异常来指示错误。您可以使用 `try-catch` 块或 `AMQPConnection::connect()` 方法的 `error_thrower` 选项来处理错误:``` PHP try {$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest'); } catch (AMQPConnectionException $e) {// 处理错误 } ```
**phpamqp****简介**phpamqp 是一个 PHP 扩展,它提供了一个 AMQP (高级消息队列协议) 客户端。AMQP 是一种工业标准协议,用于在分布式系统中可靠且高效地发送和接收消息。phpamqp 允许 PHP 开发人员轻松地与 AMQP 代理(如 RabbitMQ、Apache Qpid 和 Amazon MQ)交互。**安装**使用 PECL 安装 phpamqp:``` Bash pecl install phpamqp ```然后,启用扩展:``` Bash echo "extension=amqp.so" > /etc/php/7.4/mods-available/amqp.ini systemctl restart php7.4-fpm ```**用法**phpamqp 提供了一个面向对象的 API 来处理 AMQP 操作。以下是连接到 AMQP 代理的基本示例:``` PHP use PhpAmqpLib\Connection\AMQPStreamConnection;$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest'); $channel = $connection->channel(); $channel->queue_declare('my_queue', false, false, false, false); ```**多级标题****发布消息**``` PHP $channel->basic_publish('Hello, world!', '', 'my_queue'); ```**消费消息**``` PHP $callback = function ($msg) {echo 'Received message: ', $msg->body, PHP_EOL; }; $channel->basic_consume('my_queue', '', false, true, false, false, $callback); ```**取消订阅**``` PHP $channel->basic_cancel('consumer_tag'); ```**关闭连接**``` PHP $channel->close(); $connection->close(); ```**内容详细说明**
配置选项phpamqp 允许您通过 `AMQPStreamConnection` 构造函数自定义连接配置:* **host:** 代理主机名或 IP 地址 * **port:** 代理端口 * **user:** 代理用户名 * **password:** 代理密码 * **vhost:** 虚拟主机
发布确认phpamqp 支持发布确认。您可以通过设置 `mandatory` 为 `true` 来启用发布确认:``` PHP $channel->basic_publish('Hello, world!', '', 'my_queue', true, null); ```如果消息无法发送到队列,则 AMQP 代理将返回一个否定确认。
事务phpamqp 支持事务。您可以通过调用 `channel->tx_select()` 启动事务,并在完成操作后调用 `channel->tx_commit()` 或 `channel->tx_rollback()`:``` PHP $channel->tx_select(); // 执行操作 $channel->tx_commit(); ```
错误处理phpamqp 会引发异常来指示错误。您可以使用 `try-catch` 块或 `AMQPConnection::connect()` 方法的 `error_thrower` 选项来处理错误:``` PHP try {$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest'); } catch (AMQPConnectionException $e) {// 处理错误 } ```