美文网首页
redis实现MQTT模型订阅分布

redis实现MQTT模型订阅分布

作者: 骑蚂蚁上高速_jun | 来源:发表于2020-10-03 22:29 被阅读0次

    订阅发布其实也是属于一种特殊的消息队列Queue机制,与redis的普通队列list区别在于,如果订阅端存在多个消费端的情况下。每个消费订阅端都会执行 发布端的消息业务。

    订阅端代码:

    function connectCliRedis():Redis{
        $redis = new Redis();
        $redis->connect("127.0.0.1",6379);
        $redis->setOption(Redis::OPT_READ_TIMEOUT,-1); // 使其守护进程不会出现超时错误
        return $redis;
    }
    // 连接Redis
    $redis = connectCliRedis();
    while(true){
        if($redis->ping() != "+PONG"){
            $redis = connectCliRedis();
        }
        $redis->subscribe(['sunsun',"miling"],function(Redis $redis,string $channel,string $message){
    
            var_dump( $channel, $message);
            sleep(10);
        });
        echo "循环跳出 \n";
    }
    

    发布端代码:

    $redis = new Redis();
    $redis->connect("127.0.0.1",6379);
    $redis->setOption(Redis::OPT_READ_TIMEOUT,-1); // 使其守护进程不会出现超时错误
    $r1 = $redis->publish("sunsun","这是消息管道 sunsun 的消息");
    // 1.当消费管道 sunsun 未启动的时候, 发布的返回值等于0. 返回值是一个int 等于订阅该频道的数量
    // 2.发布/订阅模型的消息是不能保留的。
    
    var_dump($r1);
    
    

    相关文章

      网友评论

          本文标题:redis实现MQTT模型订阅分布

          本文链接:https://www.haomeiwen.com/subject/gnlwphtx.html