Це команда queue_splitter3, яку можна запустити у безкоштовного хостинг-провайдера OnWorks за допомогою однієї з наших безкоштовних онлайн-робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS
ПРОГРАМА:
ІМ'Я
queue_splitter3 - споживач PgQ, який транспортує події з однієї черги в кілька цілей
фрак
СИНТАКСИС
queue_splitter3 [перемикачі] config.ini
ОПИС
queue_spliter є споживачем PgQ, який транспортує події з вихідної черги до кількох цілей
черги. Поле ev_extra1 у кожній події показує, до якої цільової черги вона має потрапити.
(pgq.logutriga() поміщає туди назву таблиці.)
Одним із варіантів використання є переміщення подій із бази даних OLTP на сервер пакетної обробки. З допомогою
розділювач черги, за допомогою якого можна переміщати всі види подій для пакетної обробки
споживач, таким чином зберігаючи базу даних OLTP менш переповненою.
ШВИДКИЙ ПОЧАТОК
Базове налаштування та використання queue_splitter можна підсумувати такими кроками:
1. pgq має бути встановлено як у вихідній, так і в цільовій базах даних. Перегляньте довідкову сторінку pgqadm
деталі. Цільова база даних також повинна мати встановлену схему pgq_ext.
2. відредагуйте файл конфігурації queue_splitter, наприклад
queue_splitter_sourcedb_sourceq_targetdb.ini
3. створити вихідну та цільову черги
$ pgqadm.py ticker.ini створити
4. запустити роздільник черги в режимі демона
$ queue_splitter3 queue_splitter_sourcedb_sourceq_targetdb.ini -d
5. почати продукувати та споживати події
КОНФІГ
загальний конфігурація параметри
ім'я_робіту
Назва для часткової роботи, яку виконує скрипт. Сценарій увійде в систему під цим ім’ям
logdb/logserver. Ім’я також використовується за замовчуванням для імені споживача PgQ. Вона повинна бути
унікальний.
pid-файл
Розташування файлу pid. Якщо не вказано, скрипт забороняється демонізувати.
файл журналу
Розташування файлу журналу.
loop_delay
Якщо процес виконується безперервно, скільки часу спати після кожного робочого циклу, в секундах.
За замовчуванням: 1.
з'єднання_життя
Закрийте та повторно підключіть старі з’єднання з базою даних.
use_skylog
foo
загальний PgQ споживач параметри
ім'я_черги
Назва черги, до якої потрібно прикріпити. Немає замовчування.
споживач_ім'я
ID споживача для використання під час реєстрації. За замовчуванням: %(job_name)s
queue_splitter параметри
src_db
Вихідна база даних.
dst_db
Цільова база даних.
Приклад конфиг файл
[queue_splitter3]
job_name = queue_spliter_sourcedb_sourceq_targetdb
src_db = dbname=sourcedb
dst_db = dbname=targetdb
pgq_queue_name = джерелоq
файл журналу = ~/журнал/%(назва_роботи)s.log
pidfile = ~/pid/%(назва_роботи)s.pid
КОМАНДА ЛІНІЯ Перемикачі
Наступні перемикачі є загальними для всіх програм Python на основі skytools.DBScript.
-h, --допомога
показати довідкове повідомлення та вийти
-q, -- тихо
зробити програму тихою
-v, -- багатослівний
зробити програму більш докладною
-d, --демон
зробити програму фоновим
--ini
показати коментований файл конфігурації шаблону.
Наступні перемикачі використовуються для керування вже запущеним процесом. Файл pid читається з
config, то сигнал надсилається на вказаний там ідентифікатор процесу.
-r, --перезавантажити
перезавантажити конфігурацію (відправити SIGHUP)
-s, --стоп
безпечно зупинити програму (надішліть SIGINT)
-k, --убити
негайно знищити програму (надішліть SIGTERM)
ВИКОРИСТАННЯ
Як обробляти події, створені у вторинній базі даних з кількома чергами, але мають лише
одна черга в первинній базі даних. Тут також показано, як вставляти події в черги за допомогою
звичайний SQL легко.
CREATE SCHEMA черга;
CREATE TABLE queue.event1 (
-- це має відповідати внутрішній структурі події
-- тут можна поставити перевірку того, що в чергу поставлено правильні дані
id int4,
текст імені,
-- не потрібно, але добре мати:
первинний ключ (id)
);
-- помістити дані в чергу у форматі urlencoded, пропустити фактичне вставлення
СТВОРИТИ ТРИГЕР redirect_queue1_trg ПЕРЕД ВСТАВЛЕННЯМ У queue.event1
ДЛЯ КОЖНОГО РЯДКА ВИКОНАТИ ПРОЦЕДУРУ pgq.logutriga('singlequeue', 'SKIP');
-- повторіть вищезазначене для події2
-- тепер можна вставити дані:
INSERT INTO queue.event1 (id, name) VALUES (1, 'user');
Якщо queue_splitter встановлено на "singlequeue", він розповсюджує подію на ціль на черги
під назвою "queue.event1", "queue.event2" тощо. Це мінімізує навантаження PgQ на первинну базу даних
як щодо ЦП, так і щодо обслуговування.
01/15/2016 QUEUE_SPLITTER3(1)
Використовуйте queue_splitter3 онлайн за допомогою сервісів onworks.net