Blogger Information
Blog 81
fans 1
comment 0
visits 123872
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
linux rabbitmq消息队列使用案例。
有什么是忘不了的的博客
Original
1098 people have browsed it

rabbitmq需要先按账好。请看我之前的rabbitmq安装的文章>>

使用前需要先安装 php-amqplib。

composer require php-amqplib/php-amqplib

这个命令会下载一个vendor文件夹 。

57]UN)JUYCY{L{QI{36(62Q.png

使用 向队列里写入数据:

<?php
require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
//链接 这里的用户:liu是自己创建的,密码也是自己生成的。默认的用户只能本地链接,
$connection = new AMQPStreamConnection('lcoalhost',5672,'liu','123456');
$channel = $connection->channel();
//这个shop是队列的名字,自己定义的
$queue_name = 'shop';
$channel->queue_declare($queue_name,false,false,false,false);
//这里是需要向队列里写入的数据。
$msg = new AMQPMessage(json_encode(['mobile'=>'12345678909','goods_id'=>1]));
$channel->basic_publish($msg,'',$queue_name);
$channel->close();
$connection->close();

从队列里读取数据:

<?php
require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
//链接对列
$connection = new AMQPStreamConnection('localhost',5672,'liu','123456');
$channel = $connection->channel();
//队列的名字
$queue_name = 'shop';
$channel->queue_declare($queue_name,false,false,false,false);
//这里是从队列里读取数据
$callback = function($msg){
        echo $msg->body."\n";
};
$channel->basic_consume($queue_name,'',false,true,false,false,$callback);
while($channel->is_consuming()){
        $channel->wait();
}
$channel->close();
$connection->close();

如果在:tp中使用直接 你直接在 tp根目录composer require php-amqplib/php-amqplib,也无需引入自动加载类tp会自动引入。

如下:

<?php
namespace app\index\controller;
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;

class Index
{
    public function index()
    {
        $connection = new AMQPStreamConnection('localhost',5672,'liu','123456');
        $channel = $connection->channel();
        $queue_name = 'shop';
        $channel->queue_declare($queue_name,false,false,false,false);
        $msg = new AMQPMessage(json_encode(['mobile'=>'12345678909','goods_id'=>1]));
        $channel->basic_publish($msg,'',$queue_name);
        $channel->close();
        $connection->close();
    }

}

效果图:

从队列里读取数据:

(HG}P4OKG8]$YU558U{%6F4.png

这里的读取里可以使用tp的自定义指令,在使用守护进程的方式运行。

tp自定义指令手册上有教程>>

    V5.1.24+版本开始,你可以通过命令行指令快速生成一条指令,包括指令类文件,例如:

    php think make:command First first

守护进程的方式

nohup php rabbitout.php &



Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post