Skip to content

VadimDedeiko/job4j_pooh

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

О проекте "Pooh JMS"

Pooh JMS - аналог асинхронной очереди. Работает по принципу Java Message Service (JMS).

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

  • Два типа клиентов: отправители (publisher), получатели (subscriber)
  • Console UI
  • HTTP протокол
  • Система Pooh имеет два режима: queue, topic.
  • Режим Queue:
    • Отправитель посылает запрос на добавление данных с указанием очереди (weather)
      и значением параметра (например rain=5mm). Сообщение помещается в конец очереди.
    • Если очереди нет в сервисе, то нужно создать новую и поместить в нее сообщение.
    • Получатель посылает запрос на получение данных с указанием очереди.
    • Сообщение забирается из начала очереди и удаляется.
    • Примеры запросов:
      • POST запрос должен добавить элементы в очередь weather.
        curl -X POST -d "rain=5mm" http://localhost:9000/queue/weather
        queue указывает на режим «queue», weather указывает на имя очереди.
      • GET запрос должен получить элементы из очереди weather.
        curl -X GET http://localhost:9000/queue/weather
        Ответ: rain=5mm
  • Режим Topic:
    • Отправитель посылает запрос на добавление данных с указанием топика (weather) и значением параметра (temperature=18). Сообщение помещается в конец каждой индивидуальной очереди получателей.
    • Если топика нет в сервисе, то данные игнорируются.
    • Получатель посылает запрос на получение данных с указанием топика. Если топик отсутствует, то создается новый.
    • А если топик присутствует, то сообщение забирается из начала индивидуальной очереди получателя и удаляется.
    • Когда получатель впервые получает данные из топика – для него создается индивидуальная пустая очередь.
    • Все последующие сообщения от отправителей с данными для этого топика помещаются в эту очередь тоже.
    • Таким образом в режиме "topic" для каждого потребителя своя будет уникальная очередь с данными, в отличие от режима "queue", где для все потребители получают данные из одной и той же очереди.
      • Примеры запросов: Отправитель. POST /topic/weather -d "temperature=18"
        topic указывает на режим «топик».
        weather указывает на имя топика.
        Получатель. GET /topic/weather/1,
        где 1 - ID получателя.
        Ответ: temperature=18

Сборка и установка:

mvn install -Dmaven.test.skip=true
java -jar target/pooh.jar

Что может сделать программа

Программа может:

  1. Cчитывает данные из запроса и отправляет их обратно
  2. Парсит входящие запросы

Использованные технологии:


В программе использовался Шаблон проектирования Observer

Контакты:

Если у вас есть какие-либо вопросы, не стесняйтесь обращаться ко мне: https://t.me/VadimDedeyko

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages