Laravel - получить данные очереди перед запуском
Я хочу отправить пользовательские данные в свои очереди и хочу получить эти данные перед выполнением действия.
Лучшей возможностью для меня было бы отправить значение заголовка, чтобы я мог использовать getallheaders()
чтобы прочитать эти данные, но я прочитал и не нашел такой возможности.
Поскольку невозможно отправить header
, как я могу прочитать данные перед выполнением async back?
Обновить
У меня несколько баз данных, из-за этого у меня проблема с Queueable
свойства.
У меня нет соединения по умолчанию:
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
В противном случае у меня есть:
'connections' => [
'database1' => [//...],
'database2' => [//...],
]
Мой проект работает нормально, я могу делать миграции и все без проблем. Но поскольку у меня нет базы данных по умолчанию, мне нужно установить его при загрузке, поэтому моя проблема с объектами очереди заключается в том, что я не знаю, какую базу данных выбрать.
Чтобы узнать, какую базу данных выбрать, мне нужно знать по очереди.
1 ответ
Создание рабочих мест
https://laravel.com/docs/6.x/queues
Вы можете назначить имя соединения свойству при постановке задания в очередь. Любые свойства будут сериализованы для использования позже, когда задание будет запущено из очереди. Просто получите значение и используйте его по мере необходимости.
SomeJob.php
class SomeJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
// make a property to store the connection
protected $connection;
public function __construct()
{
// do some logic to determine which connection should be used and store it
$this->connection = 'database1';
}
public function handle()
{
// run the job using the stored connection
DB::connection($this->connection)->select(...);
}
}