public static function main() { self::$pool = new Pool(MAX_CONCURRENCY_JOB, \CALLWorker::class, []); $conn_args = (require 'mq.config.php'); $e_name = 'e_linvo'; //交换机名 $q_name = 'q_linvo'; //队列名 $k_route = 'key_1'; //路由key //创建连接和channel $conn = new AMQPConnection($conn_args); if (!$conn->connect()) { write_log('mq.hx9999.com 无法连接上'); return; } $channel = new AMQPChannel($conn); //创建交换机 $ex = new AMQPExchange($channel); $ex->setName($e_name); $ex->setType(AMQP_EX_TYPE_DIRECT); //direct类型 $ex->setFlags(AMQP_DURABLE); //持久化 //创建队列 $q = new AMQPQueue($channel); $q->setName($q_name); $q->setFlags(AMQP_DURABLE); //持久化 while (True) { $q->consume(function ($envelope, $queue) { $msg = $envelope->getBody(); $queue->ack($envelope->getDeliveryTag()); //手动发送ACK应答 self::$pool->submit(new Sendsms($msg)); }); } self::$pool->shutdown(); $conn->disconnect(); //睡眠 sleep(5); }