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
- POST запрос должен добавить элементы в очередь weather.
- Отправитель посылает запрос на добавление данных с указанием очереди (weather)
- Режим Topic:
- Отправитель посылает запрос на добавление данных с указанием топика (weather) и значением параметра (temperature=18). Сообщение помещается в конец каждой индивидуальной очереди получателей.
- Если топика нет в сервисе, то данные игнорируются.
- Получатель посылает запрос на получение данных с указанием топика. Если топик отсутствует, то создается новый.
- А если топик присутствует, то сообщение забирается из начала индивидуальной очереди получателя и удаляется.
- Когда получатель впервые получает данные из топика – для него создается индивидуальная пустая очередь.
- Все последующие сообщения от отправителей с данными для этого топика помещаются в эту очередь тоже.
- Таким образом в режиме "topic" для каждого потребителя своя будет уникальная очередь с данными,
в отличие от режима "queue", где для все потребители получают данные из одной и той же очереди.
- Примеры запросов:
Отправитель. POST /topic/weather -d "temperature=18"
topic указывает на режим «топик».
weather указывает на имя топика.
Получатель. GET /topic/weather/1,
где 1 - ID получателя.
Ответ: temperature=18
- Примеры запросов:
Отправитель. POST /topic/weather -d "temperature=18"
mvn install -Dmaven.test.skip=true
java -jar target/pooh.jar
Программа может:
- Cчитывает данные из запроса и отправляет их обратно
- Парсит входящие запросы
В программе использовался Шаблон проектирования Observer
Если у вас есть какие-либо вопросы, не стесняйтесь обращаться ко мне: https://t.me/VadimDedeyko