当前位置:首页 > 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 的队列。

php 实现 activemq

$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);
        }
    }
}

关闭连接

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

php 实现 activemq

$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)是必要的,避免消息重复处理。
  • 生产环境中建议使用更高级的消息处理模式(如持久化订阅)。

标签: phpactivemq
分享给朋友:

相关文章

php实现文件上传

php实现文件上传

文件上传的基本实现 在PHP中实现文件上传需要使用$_FILES超全局数组处理上传的文件数据。表单必须设置enctype="multipart/form-data"属性,并采用POST方法提交。 创…

php实现文件下载

php实现文件下载

PHP 实现文件下载的方法 使用 header() 函数强制下载 设置正确的 HTTP 头信息,强制浏览器下载文件而不是直接打开。 $file = 'path/to/file.pdf'; if (f…

php实现websocket

php实现websocket

PHP 实现 WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。PHP 可以通过多种方式实现 WebSocket 功能,以下是几种常见的方法: 使用 Ratc…

php 购物车实现

php 购物车实现

数据库设计 购物车功能通常需要设计数据库表存储商品和用户信息。常见的表包括products(商品表)、users(用户表)和cart(购物车表)。cart表通常包含字段:id(主键)、user_id(…

php 实现mvc

php 实现mvc

PHP 实现 MVC 架构的方法 MVC(Model-View-Controller)是一种常见的软件设计模式,用于分离业务逻辑、用户界面和用户输入。以下是 PHP 实现 MVC 架构的关键步骤:…

php 实现跳转

php 实现跳转

PHP 实现页面跳转的方法 在PHP中,实现页面跳转可以通过多种方式完成,以下是几种常用的方法: 使用header函数 header函数是PHP中最常用的跳转方法,通过发送HTTP头部信息实现跳转。…