我正在尝试将MQTT订阅到一个保存在数据库中的作业中,但我得到了一个错误消息,即该作业失败了,而不是运行了无限时间。我想知道我的方法是否可行,是否有更好的办法来解决我的问题。
我的代码
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use PhpMqtt\Client\Facades\MQTT;
class StartSub implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public function __construct()
{
//
}
public function handle()
{
$mqtt = MQTT::connection();
$mqtt->subscribe('topic', function (string $topic, string $message) {
echo sprintf('Received QoS level 1 message on topic [%s]: %s',
$topic, $message);
}, 1);
$mqtt->loop(true);
}
}发布于 2022-05-05 20:46:58
答案很简单。虽然我不知道这是否100%正确。经过进一步的调查,我发现我的代码因为超时而失败了。所以我只需要放一个public $timeout = 0;。
https://stackoverflow.com/questions/72128780
复制相似问题