Redis消息订阅-php实例

113 阅读1分钟

redis消息订阅没有消息确认机制,想要更为可靠的消息订阅服务应考虑使用rabbitMQ

消息生产

使用 publish 向频道生产消息

$redis = new Redis();
$redis->connect('127.0.0.1', 6379, 1);//host port 超时时间
$redis->select(0);

for($i=0;$i<=10;$i++){
	$redis->publish('send_Collect', '消息--------'.$i);//channel 消息内容
}

消息订阅端

这里处理的是产生的消息(注意redis6.0一下版本使用的是单线程,所以执行多个处理消费的仍然是同一条消息)

$redis = new Redis();
$res   = $redis->pconnect('127.0.0.1', 6379);
echo 'redis消息订阅服务已启动'.PHP_EOL;
//设置超时控制
$redis->setOption(Redis::OPT_READ_TIMEOUT, -1);
$redis->subscribe(array('send_Collect'), 'callback');


// 回调函数,这里写处理逻辑
function callback($instance, $channelName, $message)
{	
	// echo "channelName: ".$channelName.PHP_EOL;
	echo '收到消息正在处理'.PHP_EOL;
	var_dump($message);
	sleep(1);
    /* 处理逻辑 */
    echo "处理完成".PHP_EOL;
}