На этот раз мы предлагаем вам написать аналог kafka — систему доставки сообщений.

Проект состоит из двух версий — базовой и усложненной. Базовая версия дает 2.5 балла в итог, усложненная — 2.5 балла + 1 доп балл = 3.5. Подробнее про усложненную версию в отдельной секции ниже.

Enjoy 🙂

Что такое kafka

Kafka — это сервис, предоставляющий интерфейс для обмена сообщениями между разными приложениями на разных устройствах.

Основной абстракцией в kafka можно назвать топик (topic) — по сути, это канал, к которому можно подключаться либо для отправки в него сообщений, либо для его прослушки, получения сообщений из него.

kafka.png

Разберем подробно эту схему. На ней указаны два топика:

Само собой, полноценная kafka устроена намного сложнее, она имеет систему доступов, репликации, умеет в bootstrap. В рамках проекта опустим это и реализуем только базовый функционал.

Что требуется от вашей программы

Программа должна открыть прослушивающий сокет по указанному адресу и принимать входящие tcp-соединения.

Для каждого соединения она сначала ожидает одно из двух сообщений от клиента:

{"method": "subscribe", "topic": "topic_name"}