0

我想在我的队列中发送自定义数据,并希望在操作运行之前捕获这些数据。

对我来说最好的可能性是发送一个标头值,这样我就可以用它getallheaders()来读取这些数据,但我确实读过并且没有发现这种可能性。

由于不可能 send header,我如何在异步执行之前读取数据?

更新

我有多个数据库,因为我有Queueable属性问题。

我没有默认连接:

'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),

否则我有:

'connections' => [
   'database1' => [//...],
   'database2' => [//...],
]

我的项目工作正常,我可以毫无问题地进行迁移和一切。但是我没有“默认”数据库,我需要在加载时设置他,所以我在队列对象中的问题是因为我不知道选择哪个数据库。

要知道选择哪个数据库,我需要按队列知道。

4

1 回答 1

0

创建工作
https://laravel.com/docs/6.x/queues#creating-jobs

您可以在对作业进行排队时将连接名称分配给属性。当从队列中运行作业时,任何属性都将被序列化以供以后使用。只需检索该值并根据需要使用它。

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(...);
    }
}
于 2019-11-28T02:32:40.910 回答