Do the given action with the given service.
Do the given action with the given service.
This should be used in preference to #locate when possible as it will allow the service locator to add in things like circuit breakers.
It is required that the service locator will, based on the service call circuit breaker configuration, wrap the invocation of the passed in block with a circuit breaker.
The name of the service.
The service call descriptor that this lookup is for.
A block of code that takes the URI for the service, and returns a future of some work done on the service. This will only be executed if the service was found.
The result of the executed block, if the service was found.
Locate a service with the given name.
Locate a service with the given name.
The name of the service.
The service call descriptor that this lookup is for.
The URI for that service, if it exists.
Locate a service with the given name.
Locate a service with the given name.
The name of the service.
The URI for that service, if it exists.
Locates services.
The service locator is responsible for two things, one is locating services according to the passed in name and service call information, the other is to implement circuit breaking functionality when #doWithService is invoked.
The reason circuit breaking is a service locator concern is that generally, the service locator will want to be aware of when a circuit breaker is open, and respond accordingly. For example, it may decide to pull that node from its routing pool, or it may decide to notify some up stream service registry that that node is no longer responding.