1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/brh-mq2

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

MQ2 — основанная на PG очередь сообщений — Энтони Чен

  • Сценарий: асинхронная обработка данных в рамках модели «производитель-потребитель» в торговой системе, обмен данными в формате JSONB.

  • Реализация: данные очереди сохраняются на диске, это надёжная очередь с поддержкой транзакций и аудита операций постановки и снятия элементов из очереди. Для взаимного исключения используется блокировка строк PG, а для повышения производительности — условные индексы.

  • Производительность: обработка партиями по 10 элементов, скорость снятия элементов с очереди может легко превышать 10 000/с, а скорость постановки элементов в очередь практически совпадает со скоростью вставки в таблицу.

  • Особенности: продукт от «Наноге». В рамках надёжной модели «потребитель-производитель» может заменить любую другую реализацию очередей, проще в использовании и без ошибок. Также очень гибкий.

  • Надёжность: «Нанога» уже широко развернула этот модуль.

  • Простота: поддерживает только версии PG 9.4 и выше, работает только с типом данных JSONB.

  • Гордость: 180 строк кода, включая комментарии. Может превзойти любой open source MQ в сценарии с материализованной очередью.

  • Свобода: поскольку это открытый исходный код, используйте его свободно. Техническая поддержка не предоставляется.

Использование

  • Создание очереди: select mq_create_queue('【QUEUE NAME】');

  • Удаление очереди: select mq_drop_queue('【QUEUE NAME】');

  • Постановка данных в очередь: select mq_send('【QUEUE NAME】','【JSON STRING】',【 **OPTIONAL** MSG TYPE ID:bigint】);

  • Снятие данных из очереди: select mq_recv('【QUEUE NAME】', 【 **OPTIONAL** NUMBER OF MSG:big int】,【 **OPTIONAL** MSG TYPE ID:bigint】). Количество сообщений можно указать для одновременного снятия данных, по умолчанию — 1. Идентификатор типа сообщения можно использовать для получения только данных с указанным идентификатором типа, если не указано — будут получены все данные из очереди.

  • Снятие данных из очереди с использованием набора результатов: select mq_recv('【QUEUE NAME】', '【MSG TYPE ID RESULT SET】',【 **OPTIONAL** MSG TYPE ID:bigint】). Можно использовать набор результатов Raw SQL для ограничения диапазона типов данных при снятии. Количество сообщений можно указать для одновременного снятия данных, по умолчанию — 1.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Данный проект представляет собой очередь сообщений для внутренней системной шины, которая не является FIFO (First In, First Out) и реализована на основе материализованной очереди PostgreSQL. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/brh-mq2.git
git@api.gitlife.ru:oschina-mirror/brh-mq2.git
oschina-mirror
brh-mq2
brh-mq2
master