PHP code example of xiaosongshu / rabbitmq
1. Go to this page and download the library: Download xiaosongshu/rabbitmq library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
xiaosongshu / rabbitmq example snippets
namespace xiaosongshu\test;
echo $i . "\r\n";
/** 投递普通消息 */
\xiaosongshu\test\Demo::publish(['name' => 'tom', 'time' => time(), 'id' => $i]);
sleep(1);
}
echo "投递完成\r\n";
namespace xiaosongshu\test;
塞,后面的代码不会执行,仅用于windows系统调试,linux系统会自动消费死信队列的消息 */
\xiaosongshu\test\Demo::consumeD();
namespace app\commands;
hu\Rabbitmq\Client
{
/** 以下是rabbitmq配置 ,请填写您自己的配置 */
/** @var string $host 服务器地址 */
public static $host = "127.0.0.1";
/** @var int $port 服务器端口 */
public static $port = 5672;
/** @var string $user 服务器登陆用户 */
public static $user = "guest";
/** @var string $pass 服务器登陆密码 */
public static $pass = "guest";
/** 指定队列名称 */
public static $queueName = 'app\commands\Demo';
/** 指定交换机名称 */
public static $exchangeName = 'app\commands\Demo';
/** @var bool $enableDlx 是否开启死信队列 */
public static $enableDlx = true;
/**
* 业务处理
* @param array $params
* @return int
*/
public static function handle(array $params): int
{
//TODO 这里写你的业务逻辑
// ...
var_dump($params);
return self::ACK;
//return self::NACK;
}
/**
* 处理异常消息
* @param \RuntimeException $exception
* @return void
*/
public static function error(\RuntimeException $exception)
{
var_dump("捕获到了异常",$exception->getMessage());
}
public static function dlxHandle(array $params):int
{
//todo 这里写死信队列的处理逻辑,若不开启死信队列,则不需要写任何逻辑,直接返回ACK即可
//var_dump("死信队列处理",$params);
return self::ACK;
}
}
namespace app\commands;
use yii\console\Controller;
/**
* @purpose 开启队列消费
* @note 我只是一个例子
*/
class QueueController extends Controller
{
/**
* @api php yii queue/index
* @return void
* @throws \Exception
* @comment 开启消费者
*/
public function actionIndex()
{
Demo::consume();
}
}
\app\commands\Demo::publish(['name'=>'tome','age'=>15]);
\app\commands\Demo::close();
namespace app\command;
use app\service\RabbitmqService;
use app\service\Token;
use think\console\Command;
use think\console\Input;
use think\console\Output;
/**
* @purpose 异步写日志服务
* @author yanglong
* @time 2025年6月20日15:19:59
* @command nohup php think check:rabbitmq >/dev/null 2>&1 &
*/
class CheckRabbitmq extends Command
{
protected function configure()
{
// 指令配置
$this->setName('check:rabbitmq');
// 设置参数
}
protected function execute(Input $input, Output $output)
{
/** 开启消费者 */
RabbitmqService::consume();
}
}
namespace app\command;
use app\service\RabbitmqService;
use app\service\Token;
use think\console\Command;
use think\console\Input;
use think\console\Output;
/**
* @purpose 异步写日志服务
* @author yanglong
* @time 2025年6月20日15:19:59
* @command nohup php think check:rabbitmqD >/dev/null 2>&1 &
*/
class CheckRabbitmq extends Command
{
protected function configure()
{
// 指令配置
$this->setName('check:rabbitmqD');
// 设置参数
}
protected function execute(Input $input, Output $output)
{
/** 开启死信消费者 */
RabbitmqService::consumeD();
}
}
RabbitmqService::publish(['file'=>$file, 'content'=>$content]);
bash
php consume.php
bash
php consumeD.php
bash
php publish.php
bash
php yii queue/index
bash
nohup php yii queue/index >/dev/null 2>&1 &
bash
php think check:rabbitmq
bash
nohup php think check:rabbitmq >/dev/null 2>&1 &
bash
php think check:rabbitmqD
bash
nohup php think check:rabbitmqD >/dev/null 2>&1 &