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

OSCHINA-MIRROR/peachyy-sdmq

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

SDMQ

SDMQ — это простая очередь сообщений с задержкой, основанная на Redis и Kotlin.

Дизайн: https://www.cnblogs.com/peachyy/p/7398430.html

«Простой, стабильный и расширяемый отложенный обмен сообщениями».

Режимы работы

  • Поддержка master, slave (HA) требует настройки sdmq.registry.serverList — списка адресов ZK-кластера.
  • Поддержка cluster может привести к конкуренции за распределённые блокировки, эффект не очевиден. Распределённая блокировка реализована с использованием setNx Redis.
  • StandAlone.

Рекомендуется использовать режим master slave.

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

Тело сообщения

Данные передаются в формате JSON. В настоящее время поддерживается только протокол HTTP.

Параметр Описание
body Бизнес-сообщение
delay Задержка в миллисекундах относительно createTime
id Идентификатор задачи, автоматически генерируется при создании задачи и возвращается после успешного создания
status Статус, по умолчанию не заполняется
topic Заголовок
subtopic Зарезервированное поле
ttl Зарезервированное поле
createTime Время создания задачи, не обязательно, используется системное значение по умолчанию

Добавить задачу

/push  
  POST application/json

{"body":"{ffff}","delay":56600,"id":"20","status":0,"topic":"ces","subtopic":"","ttl":12}

Удалить задачу

Для удаления задачи необходимо записать JobId.

/delete?jobId=xxx
   GET

Восстановить одну задачу

Используется для восстановления задач в случае ошибок или сбоев. Восстановление выполняется на основе журнала.

/reStoreJob?JobId=xxx
   GET

Восстановить все незавершённые задачи

Восстановление выполняется на основе журнала, параметр expire указывает, нужно ли восстанавливать данные, срок действия которых истёк.

/reStore?expire=true
   GET

Очистить все данные очереди

Все данные в очереди будут удалены, включая данные из кеша.

/clearAll
    GET

Способ получения данных очереди клиентом

В настоящее время реализована поддержка метода push RocketMQ. На данный момент нет необходимости реализовывать механизм отправки и получения данных самостоятельно. Вместо этого используется сильная зависимость от MQ.

Соответствие между полями сообщений SDMQ и RocketMQ

SDMQ RocketMQ Примечание
Topic Topic
Subtopic Tag
Body Содержание сообщения Содержание сообщения

Дальнейшая оптимизация

  • Динамическая настройка разделов (buck).
  • Проблема согласованности данных между Redis и базой данных (важно).
  • Реализация собственного механизма отправки и получения.
  • Возможность переключения реализации, в настоящее время сильно зависит от Redis.
  • Веб-консоль управления очередью.
  • Реализация механизма TTL для сообщений.

Планируется переписать на Kotlin или Java.

Тестирование

Необходимо настроить адрес базы данных и адрес Redis, а также адрес ZooKeeper, если используется не одиночный режим.

Запустите тестовый класс io.sdmq.FixTest, чтобы добавить задачи в очередь.

Чтобы запустить Bootstarp, выполните потребление данных, добавленных ранее. По умолчанию используется способ потребления consoleCQ, который выводит данные на консоль.

Журнал обновлений

  • 21 ноября 2017 года 14:34:39 добавлена поддержка RESTful для очистки данных очереди.
  • 19 марта 2018 года 14:26:56 добавлена поддержка настройки способа потребления, по умолчанию используется jmsCQ. Можно изменить способ, задав -DClassName=xxxx.

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

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

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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