Skip to content

Отказоустойчивый распределенный менеджер очередей сообщений с приоритетами

License

Notifications You must be signed in to change notification settings

ashenBlade/TaskFlux

Repository files navigation

Лого

TaskFlux - это распределенный менеджер приоритетных очередей, построенный с упором в отказоустойчивость.

Что такое TaskFlux

TaskFlux - менеджер приоритетных очередей. Как обычный менеджер очередей, только каждое сообщение имеет свой приоритет.

Создан с упором на отказоустойчивость и работу в контейнерах.

За счет своей расширяемости может использоваться в самых различных приложениях.

Функциональность

Функциональность приложения:

  1. Чтение сообщений в зависимости от приоритета
  2. Динамическое создание и удаление очередей
  3. Выбор реализации приоритетной очереди
  4. Ограничения на операции с очередью (см. политики очередей)
  5. Чтение с ожиданием
  6. Механизм подтверждений

Что еще полезно:

  1. Запуск в кластере
  2. Возможность конфигурирования различных аспектов поведения
  3. Метрики в формате Prometheus
  4. Множество интерфейсов взаимодействия клиентов

Документация

Ознакомиться с функциональностью можно на страницах:

Документация, касательно использования:

Для разработчиков (и кому интересно покопаться):

Взаимодействие

Приложение поддерживает несколько интерфейсов взаимодействия:

HTTP

Можно взаимодействовать по HTTP протоколу. Для этого имеется специальный REST интерфейс.

Бинарный протокол

У приложения имеется собственный клиент-серверный протокол, построенный поверх TCP. Его работа описана на этой странице документации.

На данный момент существует реализация для языка C#. Пример использования в проекте интерактивного клиента. Сама библиотека расположена в проекте TaskFlux.Transport.Tcp.Client (пока не опубликована в NuGet).

gRPC

Имеется поддержка gRPC протокола. Сервис описан в этом proto-файле.

Начало работы

Чтобы попробовать проект:

  1. Склонируй git репозиторий проекта

    git clone https://github.com/ashenBlade/TaskFlux.git
    cd TaskFlux
  2. Запусти docker-compose в корне репозитория

    docker compose -f docker-compose.yaml up -d

    Готово! Сервер запущен.

  3. Для тестирования можно запустить консольный клиент

    dotnet run --project samples/InteractiveConsole localhost:9000

О более подробных инструкциях в документации: установка, конфигурация

Вложиться в проект

Разработка ведется в ветках feature. В ветке master расположен готовый к работе код.

Если есть предложения по функциональности - создай новый Issue

Лицензия

Проект опубликован под лицензией Apache 2.0. Больше о лицензии в LICENCE

About

Отказоустойчивый распределенный менеджер очередей сообщений с приоритетами

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published