/php-nsq-client

NSQ 客户端

Primary LanguagePHPGNU General Public License v2.0GPL-2.0

#nsq_swoole_client 基于swoole实现的NSQ客户端。支持sub、pub、mPub、auth。

  • 消息去重、重新排队的机机制、日志等都可以通过实现已定义的接口去中心实现。一般情况下只需要实现消息处理方法即可。
  • 默认实现的消费客户端构造方法参数 $finishAutotrue 时,如果 handle 方法返回false或者抛出任何异常都将自动根据requeue 对象重新排队。
  • 如果已对message对象调用了finish()或者 requeue()方法并且失败时,走 $finishAutotrue 时的逻辑。
  • $finishAutofalse 时,必须手动调用finish()或者 requeue()
  • helper 目录中封装了常用的http pubmpub

示例:

    $lookupHost = '127.0.0.1:4160';
    $topic = $channel = 'test';
    // 重复排队10次,每次50秒延时下发
    $reQueue = new \NsqClient\lib\requeue\Requeue(10, 50);
    $client = new Client(
        $topic,
        $channel,
        '',
        function (\NsqClient\lib\message\Message &$message) {
            echo "收到消息:{$message->getId()}\n";
            $message->finish();
        },
        true,
        null,
        $reQueue,
        [
            'heartbeat_interval' => 1000//1秒的心跳间隔
        ]
    );
    // 开启的工作进程数
    $workNum = 2;
    (new NsqClient())->init($client, $lookupHost, $workNum);giot