使用GatewayWorker架设了个服务端
采用RedisQueue来处理信息队列
在Events.php里的onWorkerStart里创建了订阅
$redisQueue=new Client('redis://127.0.0.1:6379');
$redisQueue->subscribe("User-1",function($message){
//信息的处理
Common::Msg($message);
});
然后外部网站使用手册上提供的例子
public static function redis_queue_send($redis,$queue,$data,$delay=0){
$queue_waiting = '{redis-queue}-waiting'; //1.0.5版本之前为redis-queue-waiting
$queue_delay = '{redis-queue}-delayed';//1.0.5版本之前为redis-queue-delayed
$now = time();
$package_str = json_encode([
'id' => rand(),
'time' => $now,
'delay' => 0,
'attempts' => 0,
'queue' => $queue,
'data' => $data
]);
if ($delay) {
return $redis->zAdd($queue_delay, $now + $delay, $package_str);
}
return $redis->lPush($queue_waiting.$queue, $package_str);
}
public static function test(){
$redis = new \Redis;
$redis->connect('127.0.0.1', 6379);
$queue ='User-1';
$data= ['some', 'data'];
$result=self::redis_queue_send($redis, $queue, $data);
}
在测试中,发现外部网站使用上面那样的发送,有发送成功了,但服务端没有收到。
在服务端里采用
$redisQueue->send('User-1',$data);
来发送,是可以收到的。
不知是哪里有问题。
外部网站是什么意思?
就是其它普通的网站,但又想要让其它网站推送数据到Redis缓存里
外部网站也部署在同一台服务器上?$redis->connect('127.0.0.1', 6379);