php 实现 activemq
使用 PHP 实现 ActiveMQ 通信
ActiveMQ 是一个开源的消息中间件,支持多种协议(如 STOMP、AMQP、MQTT)。PHP 可以通过 STOMP 协议与 ActiveMQ 交互。以下是实现方法:
安装 STOMP 扩展
确保 PHP 已安装 STOMP 扩展。可以通过以下命令安装:
pecl install stomp
在 php.ini 中添加:
extension=stomp.so
连接到 ActiveMQ
使用 STOMP 客户端连接到 ActiveMQ 服务器:
$connection = new Stomp('tcp://localhost:61613');
$connection->connect();
发送消息到队列
创建一个生产者发送消息到指定队列:

$destination = '/queue/test';
$message = 'Hello, ActiveMQ!';
$connection->send($destination, $message);
echo "Sent: $message\n";
从队列接收消息
创建一个消费者从队列接收消息:
$destination = '/queue/test';
$connection->subscribe($destination);
while (true) {
$msg = $connection->read();
if ($msg !== false) {
echo "Received: " . $msg->body . "\n";
$connection->ack($msg);
} else {
sleep(1);
}
}
使用主题(Topic)
ActiveMQ 支持发布/订阅模式。发送消息到主题:
$topic = '/topic/test';
$connection->send($topic, 'Topic message');
订阅主题:

$connection->subscribe($topic);
while (true) {
$msg = $connection->read();
if ($msg) {
echo "Topic received: " . $msg->body . "\n";
$connection->ack($msg);
}
}
错误处理
添加错误处理以确保连接稳定性:
try {
$connection = new Stomp('tcp://localhost:61613');
$connection->connect();
} catch (StompException $e) {
die('Connection error: ' . $e->getMessage());
}
断开连接
完成操作后断开连接:
$connection->disconnect();
使用事务
ActiveMQ 支持事务处理。以下是事务示例:
$connection->begin();
$connection->send('/queue/test', 'Transactional message');
$connection->commit();
注意事项
- ActiveMQ 默认监听端口为
61613(STOMP协议)。 - 确保 ActiveMQ 已启用 STOMP 协议(在
conf/activemq.xml中配置)。 - 生产环境建议使用持久化订阅和消息确认机制。
通过以上方法,可以实现 PHP 与 ActiveMQ 的基本交互。根据实际需求,可以进一步扩展功能,如消息过滤、优先级设置等。






