当前位置:首页 > PHP

php 实现 activemq

2026-02-14 12:07:21PHP

使用 PHP 实现 ActiveMQ 通信

安装 Stomp 扩展

ActiveMQ 支持 STOMP 协议,PHP 可以通过 STomp 扩展与 ActiveMQ 通信。确保安装并启用 PHP 的 Stomp 扩展。

pecl install stomp

php.ini 中添加:

extension=stomp.so

连接到 ActiveMQ

使用 Stomp 客户端连接到 ActiveMQ 服务器。默认情况下,ActiveMQ 的 STOMP 端口为 61613。

$connection = new Stomp('tcp://localhost:61613');
$connection->connect();

发送消息到队列

发送消息到指定的队列或主题。以下示例发送消息到名为 test_queue 的队列。

$message = 'Hello, ActiveMQ!';
$connection->send('/queue/test_queue', $message);
echo "Message sent: $message\n";

订阅队列并接收消息

订阅队列并监听消息。以下示例监听 test_queue 队列并打印接收到的消息。

$connection->subscribe('/queue/test_queue');
while (true) {
    if ($connection->hasFrame()) {
        $frame = $connection->readFrame();
        if ($frame != null) {
            echo "Received: " . $frame->body . "\n";
            $connection->ack($frame);
        }
    }
}

关闭连接

完成通信后,关闭连接以释放资源。

$connection->disconnect();

使用事务

如果需要确保消息的可靠性,可以使用事务发送消息。

$connection->begin();
$connection->send('/queue/test_queue', 'Transactional message');
$connection->commit();

错误处理

捕获并处理可能的异常,确保程序健壮性。

try {
    $connection = new Stomp('tcp://localhost:61613');
    $connection->connect();
    $connection->send('/queue/test_queue', 'Test message');
} catch (StompException $e) {
    echo "Error: " . $e->getMessage();
}

完整示例

以下是一个完整的发送和接收消息的示例。

<?php
try {
    // 连接
    $connection = new Stomp('tcp://localhost:61613');
    $connection->connect();

    // 发送
    $connection->send('/queue/test_queue', 'Hello, ActiveMQ!');

    // 接收
    $connection->subscribe('/queue/test_queue');
    while (true) {
        if ($connection->hasFrame()) {
            $frame = $connection->readFrame();
            if ($frame != null) {
                echo "Received: " . $frame->body . "\n";
                $connection->ack($frame);
                break;
            }
        }
    }

    // 关闭
    $connection->disconnect();
} catch (StompException $e) {
    echo "Error: " . $e->getMessage();
}
?>

注意事项

  • 确保 ActiveMQ 服务器已启动并启用 STOMP 协议。
  • 消息确认(ACK)是必要的,避免消息重复处理。
  • 生产环境中建议使用更高级的消息处理模式(如持久化订阅)。

php 实现 activemq

标签: phpactivemq
分享给朋友:

相关文章

php实现打印功能

php实现打印功能

PHP 实现打印功能的方法 PHP 可以通过多种方式实现打印功能,具体取决于打印的目标(如打印机、PDF、网页等)和需求(如直接打印、生成打印预览等)。以下是几种常见的实现方式: 使用 JavaSc…

php实现分页

php实现分页

PHP实现分页的基本方法 使用LIMIT和OFFSET进行数据库查询分页。通过计算当前页码和每页显示数量,动态生成SQL语句。 $page = isset($_GET['page']) ? (in…

php实现文件上传

php实现文件上传

PHP 文件上传实现方法 在 PHP 中实现文件上传需要处理 HTML 表单和服务器端脚本。以下是详细步骤: 创建 HTML 表单 使用 enctype="multipart/form-data"…

php实现购物车

php实现购物车

PHP实现购物车功能 购物车功能是电商网站的核心模块之一,通常涉及商品添加、删除、数量修改和结算等操作。以下是使用PHP实现购物车功能的几种方法。 使用Session存储购物车数据 Session是…

php实现文件下载

php实现文件下载

PHP实现文件下载的方法 通过PHP实现文件下载功能,可以采用多种方式,以下是几种常见的实现方法: 使用header()函数强制下载 设置HTTP头信息,强制浏览器下载文件而非直接打开: $fi…

git php实现

git php实现

Git 与 PHP 的集成实现 使用 PHP 执行 Git 命令 通过 PHP 的 exec()、shell_exec() 或 passthru() 函数可以直接调用 Git 命令,适用于服务器端操作…