- Нужно сделать аналог асинхронной очереди RabbitMQ.
- Приложение запускает Socket и ждет клиентов.
- Клиенты могут быть двух типов: отправители (publisher), получатели (subscriber).
- В качестве протокола будет использовать HTTP. Сообщения в формате JSON.
- Существуют два режима: queue, topic.
- В коде не должно быть синхронизации. Все нужно сделать на Executors и conccurent коллекциях.
- Java Concurrency (классы из пакета java.util.concurrent)
- Sockets
- Java IO
- Библиотека GSON
Отправитель посылает сообщение с указанием очереди.
Получатель читает первое сообщение и удаляет его из очереди.
Если приходят несколько получателей, то они читают из одной очереди.
Ун
6825
кальное сообщение может быть прочитано, только одним получателем.
Producer отправляет на сервер запрос вида:
{
"action": "POST",
"mode": "queue",
"key": "weather",
"text": "temperature +18 C"
}
Consumer отправляет на сервер запрос вида:
{
"action": "GET",
"mode": "queue",
"key": "weather"
}
Отправить посылает сообщение с указанием темы.
Получатель читает первое сообщение и удаляет его из очереди.
Если приходят несколько получателей, то они читают отдельные очереди.
Producer отправляет на сервер запрос вида:
{
"action": "POST",
"mode": "topic",
"key": "weather",
"text": "temperature +18 C"
}
Consumer отправляет на сервер запрос вида:
{
"action": "GET",
"mode": "topic",
"key": "weather"
}