12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- <?php
- namespace app\admin\command;
- use app\admin\services\MqttMessageClient;
- use app\jobs\DeviceReportEvent;
- use think\console\Command;
- use think\console\Input;
- use think\console\Output;
- use think\Queue;
- class MqttMessage extends Command
- {
- protected $client = null;
- public function __construct($name=null)
- {
- parent::__construct($name);
- $this->client = MqttMessageClient::getInstance();
- }
- public function onMessage($topic, $message) {
- var_dump($topic);
- $jobHandlerClassName = DeviceReportEvent::class;
- $jobQueueName = "DeviceEventQueue";
- $jobData = [
- "topic" => $topic,
- "message" => $message
- ];
- $isPushed = Queue::push( $jobHandlerClassName , $jobData , $jobQueueName );
- if( $isPushed !== false ){
- echo '消息已发出';
- }else{
- echo '消息发送出错';
- }
- }
- public function configure()
- {
- $this
- ->setName('MqttMessage')
- ->setDescription('读取MQTT消息');
- }
- public function execute(Input $input, Output $output)
- {
- $this->client->subscribe("/device/+/report", function ($topic, $message){
- $this->onMessage($topic, $message);
- });
- $this->client->loop(true);
- }
- }
|