一、以下书写是可以自动正常消费的
public function onWorkerStart()
{
//这个在onWorkerStart里只执行一次就行了,不用放到while循环里。
pcntl_signal(SIGINT, function () {
Worker::stopAll();
});
while (true) {
$receiptHandle = $res->getReceiptHandle();
$res = $queue->receiveMessage(30);
print ($res->getMessageBody());
$delete_action = $queue->deleteMessage($receiptHandle);
pcntl_signal_dispatch();
}
}
二:以下这样书写,无法自动消费,每次restart一次就消费一次
public function onWorkerStart()
{
//这个在onWorkerStart里只执行一次就行了,不用放到while循环里。
pcntl_signal(SIGINT, function () {
Worker::stopAll();
});
while (true) {
$receiptHandle = $res->getReceiptHandle();
$res = $queue->receiveMessage(30);
print ($res->getMessageBody());
//一堆事务数据库操作
$delete_action = $queue->deleteMessage($receiptHandle);
pcntl_signal_dispatch();
}
}
三、请问是“ //一堆事务数据库操作”这部分代码导致了无法自动消费吗?应当如何修改
答案很明显:"是的"
可能原因:"一堆事务操作有错误产生"