8000 GitHub - reybos/job4j_pooh: Java SE, Concurrency, Sockets, Java IO, GSON
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

reybos/job4j_pooh

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pooh JMS

Build Status   

Техническое задание

  • Нужно сделать аналог асинхронной очереди RabbitMQ.
  • Приложение запускает Socket и ждет клиентов.
  • Клиенты могут быть двух типов: отправители (publisher), получатели (subscriber).
  • В качестве протокола будет использовать HTTP. Сообщения в формате JSON.
  • Существуют два режима: queue, topic.
  • В коде не должно быть синхронизации. Все нужно сделать на Executors и conccurent коллекциях.

Технологии

  • Java Concurrency (классы из пакета java.util.concurrent)
  • Sockets
  • Java IO
  • Библиотека GSON

Queue

Отправитель посылает сообщение с указанием очереди.
Получатель читает первое сообщение и удаляет его из очереди.
Если приходят несколько получателей, то они читают из одной очереди.
Ун 6825 кальное сообщение может быть прочитано, только одним получателем.

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

Producer отправляет на сервер запрос вида:

{
    "action": "POST",
    "mode": "queue",
    "key": "weather",
    "text": "temperature +18 C"
}
в очередь weather будет добавлено сообщение "temperature +18 C"

Получить данные из очереди

Consumer отправляет на сервер запрос вида:

{
    "action": "GET",
    "mode": "queue",
    "key": "weather"
}
из очереди weather будет извлечено одно сообщение и доставлено потребителю

Topic

Отправить посылает сообщение с указанием темы.
Получатель читает первое сообщение и удаляет его из очереди.
Если приходят несколько получателей, то они читают отдельные очереди.

Отправить данные в topic

Producer отправляет на сервер запрос вида:

{
    "action": "POST",
    "mode": "topic",
    "key": "weather",
    "text": "temperature +18 C"
}
в подходящие для ключа weather топики будет добавлено сообщение "temperature +18 C"

Получить данные из topic

Consumer отправляет на сервер запрос вида:

{
    "action": "GET",
    "mode": "topic",
    "key": "weather"
}
из подходящего топика будет извлечено одно сообщение и доставлено потребителю

About

Java SE, Concurrency, Sockets, Java IO, GSON

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

0