php連結nsq客戶端

探索者發表於2021-04-06

最近看了看nsq的協議 發現比較簡單,搜了一下php的客戶端 要麼是擴充套件、要麼需要swoole、要麼很複雜。於是自己擼了一個 支援php5.6+ 倉庫地址:github.com/lizhichao/one-nsq

安裝

composer require lizhichao/one-nsq

例子

$ct = new \OneNsq\Client('tcp://127.0.0.1:4150');

// 授權
//$ct->auth('12345');

// 訂閱 

$res = $ct->subscribe('test', 's2');

// $ct2 = new \OneNsq\Client('tcp://192.168.23.129:4150');
// $res2 = $ct2->subscribe('test2', 's1');

foreach ($res as $data) 
{
// 由於採用的是迭代這裡可以方便新增其他監聽
//    $data = $res2->current();
//    $res2->next();

    if ($data === null) {
        echo 'null' . PHP_EOL;
        echo "\n --------------- \n";
        continue;
    }
    echo 'attempts:' . $data->attempts . PHP_EOL; 
    echo 'msg:' . $data->msg . PHP_EOL;
    echo 'time:' . date('Y-m-d H:i:s', $data->timestamp) . PHP_EOL;
    echo "\n --------------- \n";
//    $ct->touch($data->id);

};


// 釋出任務 
for ($i = 0; $i < 6; $i++) {
    $ct->publish('test', 'msg:' . $i . ' time:' . date('Y-m-d H:i:s'));
}

// 批量釋出
for ($i = 0; $i < 3; $i++) {
    $ct->publishMany('test', [
        'm-msg:' . $i . '-1 time:' . date('Y-m-d H:i:s'),
        'm-msg:' . $i . '-2 time:' . date('Y-m-d H:i:s'),
        'm-msg:' . $i . '-3 time:' . date('Y-m-d H:i:s')
    ]);
}

// 釋出延遲任務
for ($i = 0; $i < 6; $i++) {
    $ct->publish('test', 'd-msg:' . $i . ' time:' . date('Y-m-d H:i:s'), ($i + 1) * 1000);
}

訂閱和其他庫不一樣 沒用用閉包 這裡使用的是迭代器。迭代器可以支援同監聽多個

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章