php mqtt redis,redis实现MQTT模型订阅分布

订阅发布其实也是属于一种特殊的消息队列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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值