Gearman persistent queues и MySQL

Persistent queues позволяют Gearman-у сохранять состояние задач в базе данных. Это означает, что внезапная перезагрузка/сбой не уничтожат информацию о состоянии задач Gearman и он сможет в дальнейшем их выполнить. В моем случае в качестве СУБД выступает MySQL.

Устанавливаем Gearman и MySQL как обычно:

1
2
sudo aptitude update
sudo aptitude install gearman mysql-server

Создаем базу данных и таблицу, в которой Gearman будет хранить состояние очереди:

1
2
3
4
5
6
7
8
9
create database gearman;
use gearman;
create table gearman_queue(
  `unique_key` varchar(64) primary key,
  `function_name` varchar(255),
  `priority` int,
  `data` longblob );
create user 'gearman'@'localhost' identified by 'gearman_password';
grant all privileges on gearman.* TO 'gearman'@'localhost' with grant option;

И добавляем настройки в /etc/default/gearman-job-server:

/etc/default/gearman-job-server
1
2
3
4
5
6
7
PARAMS="-q libdrizzle \
  --libdrizzle-host=127.0.0.1 \
  --libdrizzle-user=gearman \
  --libdrizzle-password=gearman_password \
  --libdrizzle-db=gearman \
  --libdrizzle-table=gearman_queue \
  --libdrizzle-mysql"

Ну и чтобы настройки вступили в силу:

1
sudo service gearman-job-server restart

Комментарии