rabbitmq简单运用
<?php /** * 生产者 */ $connection = new AMQPConnection([ 'host' => '192.168.23.130', 'port' => 5672, 'login' => 'rabuser', 'password' => '123456' ]); $connection->connect() or die('连接失败'); try{ $exchange_name = 'trades'; $route_key = '/trade'; //投递消息到中间件 $channel = new AMQPChannel($connection);//创建消息通道 $exchange = new AMQPExchange($channel);//通过通道连接交换几 //设置通道名称 $exchange->setName($exchange_name); $data = json_encode(['time'=>time()]); //发布消息到交换机中 $exchange->publish($data,$route_key); }catch (AMQPChannelException $e){ var_dump($e); }
<?php /** * 消费者 */ $connection = new AMQPConnection([ 'host' => '192.168.23.130', 'port' => 5672, 'login' => 'rabuser', 'password' => '123456' ]); $connection->connect() or die('连接失败'); try{ $exchange_name = 'trades'; $route_key = '/trade'; $queue_name = 'queue'; //投递消息到中间件 $channel = new AMQPChannel($connection);//创建消息通道 $exchange = new AMQPExchange($channel);//通过通道连接交换几 //设置通道名称 $exchange->setName($exchange_name); //三种获取消息的模式,直连模式,主题模式,广播模式 $exchange->setType(AMQP_EX_TYPE_DIRECT); //声明 $exchange->declareExchange(); //声明队列绑定交换机路由 $queue = new AMQPQueue($channel); $queue->setName($queue_name); $queue->declareQueue(); //绑定监听获取数据 $queue->bind($exchange_name,$route_key); //消费数据,默认阻塞监听获取数据 $queue->consume(function ($event,$queue){ //获取数据 $msg = $event->getBody(); var_dump($msg); var_dump($queue); //回应ACK $queue->ack($event->getDeliveryTag()); }); }catch (AMQPChannelException $e){ var_dump($e); }