Service discovery¶
Enabling automatic service discovery¶
In order to enable automatic service discovery, you need to define at least one discovery strategy.
class ExampleService(gemstone.MicroService):
# ...
discovery_strategies = [
gemstone.discovery.RedisDiscoveryStrategy("redis://registry.example.com:6379/0"),
# ...
]
# ...
Using service discovery¶
You can use the gemstone.MicroService.get_service()
method to automatically
discover other microservice that uses at least one discovery strategy as your service does,
and interact with it directly.
Example
# ...
remote_service = self.get_service("user_manager_service")
if not remote_service:
raise RuntimeError("Service could not be located")
res = remote_service.call_method("find_user", {"username": "example"}
# ...
The gemstone.MicroService.get_service()
method returns a gemstone.RemoteService()
instance. See gemstone_client for more information on this topic.