Redis队列失败作业正在记录到MySQL

时间:2016-09-14 09:41:23

标签: php laravel jobs lumen

队列驱动程序设置为使用Redis

BufferedWriter bw = null;
BufferedReader br = null;
try {
    String str = destination + "//" + inFile.getName();
    br = new BufferedReader(new InputStreamReader(new FileInputStream(inFile), "UTF-8"));
    bw = new BufferedWriter(
            new OutputStreamWriter(new FileOutputStream(new File(str), false), "UTF-8"));

    String line;
    try {
        while ((line = br.readLine()) != null) {
            bw.write(line);
            System.out.println(line);
        }
    } catch (IOException ex) {
        ex.printStackTrace();
    }
} catch (FileNotFoundException ex) {
    ex.printStackTrace();

} catch (UnsupportedEncodingException ex) {
    ex.printStackTrace();

} finally {
    try {
        if(bw != null)
            bw.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    try {
        if (br != null)
            br.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

使用

QUEUE_DRIVER=redis

我们收到的错误是

php /opt/artisan queue:work --tries=1 --queue="data-ingestion-default" --daemon

似乎错误是由于Worker尝试将失败的作业记录到mysql数据库。

但是,我们在这个实例中没有使用MySQL,如果我们在config / database.php中没有连接'mysql',默认的db被称为'development'。

2 个答案:

答案 0 :(得分:6)

在config / queue.php中查看失败的配置 默认值为:

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

将其更改为使用redis

您可以在github reop laravel/config/queue.php

中查看整个配置文件

答案 1 :(得分:0)

您无法使用redis驱动程序来执行此操作。但是,如果您使用Laravel Horizo​​n,Horizo​​n将自动将失败的作业保存在Redis