tp5使用RabbitMQ的使用记录

准备工作:

1. 搭建好rabbitmq服务器

2. 搭建好TP网站

一、 安装amqp包

composer require php-amqplib/php-amqplib

二、 网站中写一个发布者请求,往rabbitmq服务器发送数据。

app\controller\Test.php

getConnection();

        $channel->queue_declare('hello', false, false, false, false);

        $msg = new AMQPMessage("Hello RabbitMQ");

        $channel->basic_publish($msg, '', 'hello');

        echo "[x] send 'hello world\n' ";
        $channel->close();

        $connection->close();
    }
}

rabbitmq 连接工具类 : app\Library\RabbitMQConnection.php

channel();

            return [$connection, $channel];
        } catch (\Exception $e) {
            return [null, null];
        }

    }

    public function closeConnectionAndChanel($channel, $connection)
    {
        $channel->close();
        $connection->close;
    }
}

相关的路由请求文件

Route::get("send", 'test/index');

这两个文件写完以后,发起一个请求

tp5使用RabbitMQ的使用记录_第1张图片

看到这一句话后,到rabbitmq管理网站上看队列里面有没有数据

tp5使用RabbitMQ的使用记录_第2张图片 

接下来我们就要消费这个数据

因为消费数据是需要不断监听rabbitmq服务器传过来的数据,所有我选择有执行命令行来监听服务器。后期就可以执行这个命令脚本了。

tp5使用RabbitMQ的使用记录_第3张图片app\Command\Recevie.php

setName('receive')
            ->setDescription('rabbitmq 消费队列');
    }

    protected function execute(Input $input, Output $output)
    {
        // 指令输出
        $output->writeln("RabbitMQ 消费队列开始启动……\n");

        $Rc = new RabbimtMQConnection();
        list($connection, $channel) = $Rc->getConnection();
        $output->writeln("RabbitMQ 创建通道成功……\n");
        $channel->queue_declare('hello', false, false, false, false);


        $callback = function ($msg) use ($output) {
            $output->writeln("通过RabbitMQ获取到消费者了,该条消息是: $msg->body \n");
        };

        $channel->basic_consume('hello', '', false, true, false, false, $callback);


        while ($channel->is_open()) {
            $channel->wait();
        }
    }
}

 tp5使用RabbitMQ的使用记录_第4张图片

 

tp5使用RabbitMQ的使用记录_第5张图片 

tp5使用RabbitMQ的使用记录_第6张图片 

这就是一个完整的rabbitmq 下的hello world的一个体验。后期我会根据rabbitmq的不同的工作模式在写不同的记录文章的。 

你可能感兴趣的:(PHP,tp5,rabbitmq)