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) {// 处理错误 } ```

标签列表