PHP code example of lwz / laravel-mq
1. Go to this page and download the library: Download lwz/laravel-mq 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/ */
lwz / laravel-mq example snippets
'providers' => [
// ...
Lwz\LaravelExtend\MQ\MQServiceProvider::class,
],
return [
'mq_type' => MQConst::TYPE_ROCKETMQ, // 队列类型
/**
* rocketmq 相关配置。队列关键参数:
* instance_id => topic => message tag
*/
'rocketmq' => [
'http_endpoint' => env('ROCKETMQ_HTTP_ENDPOINT'),
'access_key' => env('ROCKETMQ_ACCESS_KEY'),
'secret_key' => env('ROCKETMQ_SECRET_KEY'),
'topic_group' => [ // topic分组
// 'scrm' => [ // scrm实例
// 'instance_id' => '实例id',
// 'topic' => 'topic名称',
// ]
],
'consume_group' => [ // 消费者分组
// 'add_clue' => [ // 消费组名称
// 'msg_tag' => 'clue', // 消息标签
// 'group_id' => 'scrm_clue', // 分组id
// 'handle_class' => '', // 处理的消息的类名。必须继承 Lwz\LaravelExtend\MQ\Interfaces\ConsumerInterface 接口
// ],
],
]
];
// 第一步:创建生产者对象
$mqObj = app(MQReliableProducerInterface::class,[
'topic_group' => 'scrm', // topic组名
'msg_tag' => 'clue', // 消息标签组名
// 'delay_time' => '延迟时间戳(具体时间的时间戳,如:strotime(2022-10-10 10:32:43),可以不传 或 传 null)',
// 'msg_key' => '消息唯一标识(如果没传会默认生成一个唯一字符串),如:订单号',
]);
DB::transaction(function () use ($mqObj) {
// todo 业务代码
// xxxxxxxx
// 第二步:调用 publishPrepare() 方法,记录消息状态
$data = []; // 需要推送到队列的数据
$mqObj->publishPrepare($data);
});
// 第三步:将消息推送到队列中
$mqObj->publishMessage();
// 获取MQ对象
$mqObj = app(MQReliableProducerInterface::class, [
'multi_data' => true, // 发送多条数据
]);
$mqObj->publishPrepare([
[
'topic_group' => 'group_test2', // topic 分组
'msg_tag' => 'develop_test1', // 消息标签
'payload' => ['dfg'], // 消息内容(数组)
'delay_time' => null, // 延迟时间(具体的某个时间点,可以不传 或 传 null)
],
[
'topic_group' => 'group_test1', // topic 分组
'msg_tag' => 'develop_test2', // 消息标签
'payload' => ['ghj'], // 消息内容(数组)
'delay_time' => null, // 延迟时间(具体的某个时间点,可以不传 或 传 null)
],
]);
$mqObj->publishMessage();
shell
php artisan vendor:publish --provider="Lwz\LaravelExtend\MQ\MQServiceProvider"
shell
php artisan migrate
shell
php artisan mq:reproduce
shell
php artisan mq:consumer topic组名称 消费者名称