Как поместить задачи Gearman в MySQL на Debian?

Применять базу данных для хранения задач отправленных в Gearman нужно всегда. Очень странно, что разработчики не сделали этот пункт обязательным.

Мы будем использовать Debian 8 и MySQL.

Настраиваем MySQL

  1. Создаем базу данных gearman:
    CREATE DATABASE gearman;
  2. Создаем внутри базы данных таблицу queue:
    CREATE TABLE `queue` (
      `unique_key` varchar(64) DEFAULT NULL,
      `function_name` varchar(255) DEFAULT NULL,
      `priority` int(11) DEFAULT NULL,
      `data` longblob,
      `when_to_run` bigint(20) DEFAULT NULL,
      UNIQUE KEY `unique_key` (`unique_key`,`function_name`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  3. создаем пользователя gearman для работы с таблицей:
    GRANT select,insert,drop,create,update,delete,alter,index 
    ON gearman.*
    TO gearman@localhost
    IDENTIFIED BY 'самый_сложный_пароль';

Настраиваем Gearman

Настраиваем автостарт Gearman с поддержкой MysSQL для этого редактируем /etc/default/gearman-job-server. Приводим его к виду:

PARAMS="--listen=localhost
        --job-retries=3 \
        --queue-type=MySQL \
        --mysql-host=localhost \
        --mysql-port=3306 \
        --mysql-user=gearman \
        --mysql-password=самый_сложный_пароль \
        --mysql-db=gearman \
        --mysql-table=queue"

Где job-retries — это количество попыток запуска задания, после которого оно удаляется из очереди навсегда.

После чего остается только перезапустить gearman и запустить воркер.

Комментарии:

Имя
e-mail
Сайт
Текст комментария: