PHP使用ActiveMQ实现消息队列的方法详解(2)
body就把我们发送的内容读取出来了。
我们循环读取(死循环)一直等待新消息:
do{
if ($connect->hasFrameToRead()){
$frame = $connect->readFrame();
print_r($frame->body);
}
} while (true);
处理消息之后(在发送邮件等业务完成之后),要通知mq我处理了该条消息了
if ($connect->hasFrameToRead()){
$frame = $connect->readFrame();
//print_r($frame->body);
//做业务逻辑
//具体发送邮件的业务
//send email
//最后通知mq,我们已经处理了该条消息
$connect->ack($frame);
}
我们还可以在优化一下代码,解决死循环,控制循环(这里是一种方案演示)
do{
//会等待,直到有可用消息,才执行后面代码
if ($connect->hasFrameToRead()){
$frame = $connect->readFrame();
//print_r($frame->body);
//做业务逻辑
//具体发送邮件的业务
//send email
sleep(2); //模拟延时
//最后通知mq,我们已经处理了该条消息
$connect->ack($frame);
}
//控制循环
$next = true;
if (file_exists(__DIR__.'/stop')){
//如果有名为stop的一个文件
//就不循环了
$next = false;
}
} while ($next);
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数据结构与算法教程》、《php程序设计算法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》及《PHP数学运算技巧总结》
希望本文所述对大家PHP程序设计有所帮助。
