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(...);
    }
}
Другие вопросы по тегам