PHP code example of playcat / queue-webman

1. Go to this page and download the library: Download playcat/queue-webman 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/ */

    

playcat / queue-webman example snippets




namespace app\playcat\queue;
use Playcat\Queue\Protocols\ConsumerBase;
use Playcat\Queue\Protocols\ConsumerData;

class SmsSend extends ConsumerBase
{
    //2.0新增,可以针对不同的队列设置最大重试次数和重试间隔时间,如不设置则使用全局配置
    //public const MAX_ATTEMPTS = 3;
    //public const RETRY_SECONDS = 1;
    
    //消费队列别名,如果不指定则使用类名作为队列名称(不建议继续使用)
    //public $queue = 'playcatqueue';
    
    /**
    * 1.12新增初始化执行,只在该类首次加载时执行一次,以便执行一些耗时间的操作,例数据库连接或者初始化一些数据等,该方法不接收和返回参数,可不写。
    */
    public function onInit():void
    {
        //...你自己的初始化逻辑
    }
    
    public function consume(ConsumerData $payload)
    {
        //获取发布到队列时传入的内容
        $data = $payload->getQueueData();
        ...你自己的业务逻辑
        //休息10s
        sleep(10);
        echo('done!');
    }
}


use Playcat\Queue\Webman\Manager;
use Playcat\Queue\Protocols\ProducerData;
  //即时消费消息
  $payload = new ProducerData();
  //对应消费队列里的任务名称
  $payload->setChannel('test');
  //对应消费队列里的任务使用的数据
  $payload->setQueueData([1,2,3,4]);
  //推入队列并且获取消息的唯一id
  $id = Manager::getInstance()->push($payload);

  //延迟消费消息
  $payload_delay = new ProducerData();
  $payload_delay->setChannel('test');
  $payload_delay->setQueueData([6,7,8,9]);
  //设置60秒后执行的任务
  $payload_delay->setDelayTime(60);
  //推入队列并且获取消息的唯一id
  $id = Manager::getInstance()->push($payload_delay);
  //取消延迟消息
  Manager::getInstance()->del($id);
shell
#RH,CentOS 7 
sudo yum install php-pecl-redis5 php-pecl-msgpack
sudo yum install php-pecl-rdkafka5 #(使用Kafka必须)

#RH,CentOS,Rock 8及以上
sudo dnf install php-pecl-redis6 php-pecl-msgpack
sudo dnf install php-pecl-rdkafka6 #(使用Kafka必须)

php webman timerserver:initdb