这里只是简单实现下redis消息队列,主要了解下这个思路 要把消息队列最好,还需考虑可靠消费、可靠发布、持久化、路由匹配、队列监控、负载均衡。。。 大都用专业的消息队列系统
这里只是简单实现下redis消息队列,主要了解下这个思路
要把消息队列最好,还需考虑可靠消费、可靠发布、持久化、路由匹配、队列监控、负载均衡。。。
大都用专业的消息队列系统如rabbitmq,我们公司用的就是这个
producer.php生产者者代码
<?php
$redis = new Redis();
$redis->connect('192.168.1.198',7000);
while(true){
try{
$value = 'value_'.date('Y-m-d H:i:s');
$redis->lpush('key1',$value);//生成消息
sleep(rand()%3);
echo $value."\n";
}catch(Exception $e){
echo $e->getMessage()."\n";
}
}
?>
consumer.php消费者代码
<?php
$redis = new Redis();
$redis->connect('192.168.1.198',7000);
while(true){
try{
$value=$redis->lpop('key1')."\n";
file_put_contents('val.txt',$value,FILE_APPEND);//将获取到的消息存入val.txt
}catch(Exception $e){
echo $e->getMessage()."\n";
}
sleep(rand()%3);
}
?>
分别命令行执行生产者和消费者
[root@localhost redis]# php producer.php
value_2016-08-06 20:22:57
value_2016-08-06 20:22:58
value_2016-08-06 20:22:59
value_2016-08-06 20:23:01
value_2016-08-06 20:23:03
...
[root@localhost redis]# php consumer.php