特定连接的Laravel自定义failed_jobs表

juzqafwq  于 2023-02-05  发布在  其他
关注(0)|答案(1)|浏览(183)

我有一个问题...我找不到办法!
基本上,在我的API层中,我需要分离2个不同数据库上的队列,以便安全和独立地维护备份。
对于作业队列没有问题,我解决了在queue.php配置文件中创建2个不同的连接类型,但我没有找到一种方法来自定义failed_jobs表...似乎这是必要的一个,没有特定的配置.

'connections' => [

        'database_custom' => [
            'connection' => 'mysql_custom',
            'driver' => 'database',
            'table' => env('QUEUE_TABLE', 'co_jobs'),
            'queue' => 'default',
            'retry_after' => 90,
            // -- add here potentially configurations for custom failed jobs table????
        ],

        'database' => [
            'driver' => 'database',
            'table' => env('QUEUE_TABLE', 'jobs'),
            'queue' => 'default',
            'retry_after' => 90,
        ],

    ],

    /*
    |--------------------------------------------------------------------------
    | Failed Queue Jobs
    |--------------------------------------------------------------------------
    |
    | These options configure the behavior of failed queue job logging so you
    | can control which database and table are used to store the jobs that
    | have failed. You may change them to any database / table you wish.
    |
    */

    'failed' => [
        'database' => env('DB_CONNECTION', 'mysql'),
        'table' => env('QUEUE_FAILED_TABLE', 'failed_jobs'),
    ],

有没有人遇到过同样的问题?提前感谢您的帮助。马可
我尝试了很多可能性,没有任何可行的结果。

taor4pac

taor4pac1#

要分离两个不同数据库的失败作业表,可以创建新的数据库连接并指定失败作业的表名。
下面是您可以如何修改代码来实现这一点:

'connections' => [
'database_custom' => [
'connection' => 'mysql_custom',
'driver' => 'database',
'table' => env('QUEUE_TABLE', 'co_jobs'),
'queue' => 'default',
'retry_after' => 90,
],

    'database' => [
        'driver' => 'database',
        'table' => env('QUEUE_TABLE', 'jobs'),
        'queue' => 'default',
        'retry_after' => 90,
    ],

],

'failed' => [
'database_custom' => [
'connection' => 'mysql_custom',
'table' => env('QUEUE_FAILED_TABLE', 'co_failed_jobs'),
],

'database' => [
        'connection' => 'mysql',
        'table' => env('QUEUE_FAILED_TABLE', 'failed_jobs'),
    ],
],

通过这种方法,您可以在两个不同的数据库中拥有两个单独的失败作业表,因此您可以安全独立地维护备份。

相关问题