Hi this might be a bit of a noob question, but I can't seem to find an appropriate solution for the following use case:
On the backend we have x number of services distributed across VMs, each providing the same service (distributed replication). These services are all listening on a distributed event bus (such as Hazelcast).
When an event arrives, say GetDataA, the EventBus infrastructure sends the event to each of the back end services one at a time. If a service decides its going to process the event it does so and returns the data to the publisher of the event via the EventBus.
Once a service decides its going to process an event, then the EventBus should stop sending that event to other listeners (services), and continue routing the next event (i.e. it should be non-blocking)
So this solution requires a kind of request/response distributed event architecture running asynchronously.
Does anyone know of any scalable solutions in this space. I've looked at Hazelcast, but the event mechanism means that all listeners will get the event. I've looked at the Executor service, but this sends code to other nodes, while what I am looking for is for another single node to process the request.