php 实现 activemq
PHP 实现 ActiveMQ 连接与消息收发
ActiveMQ 是一个流行的开源消息代理,支持多种协议(如 STOMP、AMQP)。PHP 可通过 STOMP 协议与 ActiveMQ 交互,以下是具体实现方法。
安装 STOMP 扩展
确保 PHP 已安装 STOMP 扩展。Linux 环境下可通过以下命令安装:
pecl install stomp
在 php.ini 中添加扩展:
extension=stomp.so
连接 ActiveMQ 服务器
使用 stomp_connect() 函数建立连接,需指定 ActiveMQ 服务器地址和端口:
$connection = stomp_connect('tcp://localhost:61613');
if (!$connection) {
die('连接失败');
}
发送消息到队列
通过 stomp_send() 向指定队列发送消息。示例发送字符串消息到 test_queue:
$queue = '/queue/test_queue';
$message = 'Hello ActiveMQ from PHP';
stomp_send($connection, $queue, $message);
订阅并接收消息
使用 stomp_subscribe() 订阅队列,通过 stomp_read() 读取消息:
stomp_subscribe($connection, '/queue/test_queue');
$frame = stomp_read($connection);
if ($frame) {
echo "收到消息: " . $frame['body'];
}
事务支持(可选)
ActiveMQ 支持事务操作。开启事务并提交:
stomp_begin($connection, 'tx1');
stomp_send($connection, '/queue/test_queue', 'Transaction message', ['transaction' => 'tx1']);
stomp_commit($connection, 'tx1');
断开连接
操作完成后关闭连接:
stomp_unsubscribe($connection, '/queue/test_queue');
stomp_disconnect($connection);
错误处理
捕获 STOMP 异常并处理连接或消息错误:
try {
$connection = stomp_connect('tcp://localhost:61613');
// 其他操作...
} catch (StompException $e) {
echo '错误: ' . $e->getMessage();
}
使用 SSL 加密连接(可选)
如需加密连接,可配置 SSL:
$connection = stomp_connect('ssl://localhost:61612', 'username', 'password', ['ssl' => ['verify_peer' => false]]);
注意事项
- ActiveMQ 需启用 STOMP 协议(默认端口 61613)。
- 生产环境建议使用持久化订阅和消息确认机制。
- 高并发场景考虑使用连接池或消息批处理。
通过以上步骤,PHP 应用可实现与 ActiveMQ 的消息收发功能。根据实际需求调整队列名称、消息格式及错误处理逻辑。







