Задача такая:
Есть именованные шины сообщений/событий - на которые разными источниками выкладываются сообщения в режиме «отправил - и забыл». Никакой связи между источниками и получателями нет.
Нужна некая система, которая обеспечивает:
а) У неё есть отказоустойчивые клиенты как для роли получателя, так и для роли отправителя (на стороне отправителя сообщения откладываются в буфер и делаются попытки реконнекта в случае наличия проблем соединения, на стороне получателя - просто постоянные попытки реконнекта после обрыва связи)
б) Система предоставляет получателю возможность запросить «все доступные/сохранённые сообщения из шины с именем N,начиная с id=X». При этом система имеет право отдать только те сообщения из шины, которые она в разумных пределах «окна исторических данных» временно сохранила
в) Система не налагает каких-либо ограничений на размер или содержание сообщения, но при этом даёт возможность получателю считать только размер сообщения или только Y первых байт сообщения.
в - необязательное требование.
Пока знаю одну такую систему, это Apache Kafka. Для простеньких проектов, тем более в рамках ограниченных ресурсов, это сильный оверхед по ресурсам, так и по сложности администрирования.
Есть ли что-нибудь менее универсальное, чем Kafka и, желательно, ориентированное именно на «событийное широковещание»?
Спасибо!