Привет, это может быть немного нубом вопроса, но я не могу показаться, чтобы найти подходящее решение для следующего случая использования:распределенной обработки событий
На внутреннем интерфейсе мы имеем й число услуг, распределенные по виртуальным машинам , каждый из которых предоставляет одну и ту же услугу (распределенная репликация). Эти службы прослушивают распределенную шину событий (например, Hazelcast).
Когда событие прибывает, скажем, GetDataA, инфраструктура EventBus отправляет событие каждой из сторонних служб по одному за раз. Если служба решает, что собирается обработать событие, она делает это и возвращает данные издателю события через EventBus.
После того, как услуга решает ее будет обрабатывать событие, то EventBus следует прекратить отправку этого события других слушателей (услуги), и по-прежнему маршрутизации следующего события (т.е. он должен быть без блокировки)
Так это решение требует асинхронной архитектуры распределенного события с запросом/ответом.
Кто-нибудь знает какие-либо масштабируемые решения в этом пространстве. Я посмотрел на Hazelcast, но механизм событий означает, что все слушатели получат это событие. Я посмотрел на службу Executor, но это отправляет код другим узлам, а то, что я ищу, - это другой узел для обработки запроса.