You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP新手求助:如何用repejota/phpnats连接Docker中的NATS服务器?

PHP连接Docker中NATS服务器并发布消息指南

一、和数据库连接的异同

  • 相似点:
    • 都需通过客户端库建立与服务端的网络连接
    • 都要配置服务端地址、端口等基础参数
    • 连接失败时都需处理异常场景
  • 不同点:
    • 核心用途:NATS是消息中间件,主打服务间异步通信;数据库用于数据持久化存储
    • 操作模式:NATS以发布、订阅、请求响应为核心逻辑;数据库以增删改查操作为主
    • 连接生命周期:NATS通常保持长连接以实时接收消息;数据库连接可按需创建或复用,部分场景用连接池管理

二、使用repejota/phpnats库的实操步骤

1. 安装依赖

通过Composer安装指定库:

composer require repejota/phpnats

2. 基础连接与消息发布示例

假设Docker中NATS服务器默认端口4222已映射到主机,主机地址为localhost:

<?php
require __DIR__ . '/vendor/autoload.php';

use Nats\Connection;
use Nats\ConnectionOptions;

try {
    // 配置连接参数
    $options = new ConnectionOptions();
    $options->setHost('localhost');
    $options->setPort(4222);
    // 若NATS开启认证,添加以下配置
    // $options->setUser('your_username');
    // $options->setPass('your_password');

    // 建立连接
    $connection = new Connection($options);
    $connection->connect();

    // 发布消息到指定主题
    $subject = 'test.topic';
    $message = 'Hello from PHP via repejota/phpnats!';
    $connection->publish($subject, $message);

    echo "消息发布成功\n";

    // 按需关闭连接
    $connection->close();
} catch (\Exception $e) {
    echo "连接或发布失败: " . $e->getMessage() . "\n";
}

3. 验证消息接收(可选)

编写订阅脚本确认消息能被正常接收:

<?php
require __DIR__ . '/vendor/autoload.php';

use Nats\Connection;
use Nats\ConnectionOptions;

try {
    $options = new ConnectionOptions();
    $options->setHost('localhost');
    $options->setPort(4222);

    $connection = new Connection($options);
    $connection->connect();

    // 订阅目标主题
    $connection->subscribe('test.topic', function ($message) {
        echo "收到消息: " . $message->getBody() . "\n";
    });

    // 保持运行以监听消息
    while (true) {
        $connection->wait(1);
    }
} catch (\Exception $e) {
    echo "订阅失败: " . $e->getMessage() . "\n";
}

4. Docker NATS配置注意事项

  • 启动容器时需映射端口:docker run -p 4222:4222 nats
  • 若启用JetStream持久化消息,需在连接时额外配置对应参数,repejota/phpnats支持JetStream相关操作

内容的提问来源于stack exchange,提问作者iyou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 09:19:58