Laravel Queue Как получить данные в методе задания
Я создал последовательность сообщений для отправки в текстовых сообщениях через Twilio.
Я создал контроллер для помещения сообщений в очередь с данными, полученными в запросе на публикацию. Вот мой контроллер для создания очереди:
public function make_queue(Request $request)
{
$data = array(
'phone' => $request->input('phone'),
'message'=> $request->input('message'),
'token'=> $request->input('token')',
'sid'=> $request->input('sid')
);
ProcessMessages::dispatch($data)
->delay(now()->addSeconds(15));
return 'message will be sent';
}
И в ручке работы, в функции ручки
public function handle()
{
$token = should_come_from job;
$sid = should_come_from job;
$ids = should_come_from job;
$msg = should_come_from job;
try{
//send message
}
catch (exception $e)
{
handle exception
}
}
Я не могу понять, как мне получить значения в функции дескриптора для фактической отправки сообщения....
1 ответ
Решение
Вам нужно добавить метод конструктора в ваш класс обработчика заданий (ProcessMessages
), например:
// namespace and use statements...
class ProcessMessages implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $data;
public function __construct(array $data)
{
$this->data = $data;
}
public function handle()
{
$token = $this->data['token'];
// ...
}
}
После того, как вы написали свой класс задания, вы можете отправить его, используя метод отправки самого задания. Аргументы, переданные методу диспетчеризации, будут переданы конструктору задания. Читайте о рассылке вакансий.