/**
* 发送一个推送
* @param mixed client_id 设备号(字符串/数组) 1
* @param int group 分组(如:1=用户端2=骑手端) 1
* @param msg_type 透传消息类型
* @param order_id 订单ID
* @return mixed
* @author xuefeiniao
* @date 2022/2/25 1:44 下午
*/
public static function send_notice($data)
{
$dataArr = [
'type' => 2,
'client_id' => $data['client_id'],
'template_type' => 3,
'group' => $data['group'],
'title' => '',
'content' => '',
'payload' => json_encode(['type' => 2,'msg_type'=>$data['msg_type'], 'order_id' => $data['order_id']])
];
// 1.当前任务将由哪个类来负责处理。
// 当轮到该任务时,系统将生成一个该类的实例,并调用其 fire 方法
// $jobHandlerClassName = 'app\common\OrderNotice';
$jobHandlerClassName = 'app\common\job\OrderNotice';
// 2.当前任务归属的队列名称,如果为新队列,会自动创建
$jobQueueName = "SendRiderNoticeJobQueue";
// 3.当前任务所需的业务数据 . 不能为 resource 类型,其他类型最终将转化为json形式的字符串
// 4.将该任务推送到消息队列,等待对应的消费者去执行
$res = Queue::push( $jobHandlerClassName , $dataArr , $jobQueueName );
}
doJob($data);
// file_put_contents("1.txt",json_encode($isJobDone).PHP_EOL, FILE_APPEND);
if ($isJobDone) {
//如果任务执行成功, 记得删除任务
$job->delete();
}else{
if ($job->attempts() > 2) {
//通过这个方法可以检查这个任务已经重试了几次了
/// Log::info('自动取消订单执行失败,已经重试好多次');
$job->delete();
// 也可以重新发布这个任务
//print("Hello Job will be availabe again after 2s."." \n");
//$job->release(2); //$delay为延迟时间,表示该任务延迟2秒后再执行
}
// Log::info('推送消息失败');
}
}
/**
* 发送消息推送
* 根据消息中的数据进行实际的业务处理
* @param array|mixed $data 发布任务时自定义的数据
* @return boolean 任务执行的结果
*/
private function doJob($data) {
// 个推 (zb 框架)
$res = addons_action('Getui/Getui/pushMessageToList', [$data]);
// jpush (fastadmin)
// $objectPush = new \addons\gpush\controller\Index;
// switch ($type) {
// case 1:
// $res = $objectPush->pushMessageToSingle($data, $clientId, $template_type, $group); //
// break;
// case 2:
// $res = $objectPush->pushMessageByTag($data, $clientId, $template_type);
// break;
// case 3:
// $res = $objectPush->pushMessageToApp($data, $clientId, $template_type);
// break;
// case 4:
// $res = $objectPush->pushMessageToList($data, $clientId, $template_type);
// break;
// }
if($res){
return true;
}else{
return false;
}
}
}
return [
// 'connector' => 'Sync' // 系统文件存储,会立即执行推送而非队列
'connector' => 'Redis', // Redis 驱动
'expire' => 900, // 任务的过期时间,默认为60秒; 若要禁用,则设置为 null
'default' => 'chat', // 默认的队列名称
'host' => '127.0.0.1', // redis 主机ip
'port' => 6379, // redis 端口
'password' => 'redis密码', // redis 密码
'select' => 10, // 使用哪一个 db,默认为 db0
'timeout' => 0, // redis连接的超时时间
'persistent' => false, // 是否是长连接
]
php think queue:work --daemon --queue SendRiderNoticeJobQueue
tp5.0
php /www/wwwroot/clothing_store_service/think queue:work --queue order_queue_name --daemon