This forum has been archived. Please start a new discussion on GitHub.

IceStorm failover, resolving endpoints during runtime

In my project I plan to provide IceStorm failover so this service could run on any host and all subscribers/publishers resolve IceStorm service endpoints during runtime. Could you suggest the best way to do so not using indirect proxies and/or locators? Note: IceGrid will be not used intentionally because of internal requirements.
Thanks in advance.


  • benoit
    benoit Rennes, France

    The indirection mechanism that Ice provides to resolve endpoints at runtime is the Ice::Locator interface which is implemented by IceGrid. If you can't use it, you either have to implement your own mechanism or use another indirection mechanism.

    You could for instance implement a small registry service where you register the endpoints of the running IceStorm service and your publishers/subscribers would first contact this registry to get the IceStorm endpoints. This service could be replicated for higher reliability.

    Another option would be to use a DNS hostname. Your publishers/subscribers would always contact the IceStorm service with for example the endpoint: "tcp -h -p 15000" and you would update the DNS each time the IceStorm service is relocated to another host.

    Finally, you could also use a proxy with multiple endpoints for the IceStorm topic manager. Each endpoint would point to a potential location of the IceStorm service (e.g.: "tcp -h -p 15000:tcp -h -p 15000:tcp -h -p 15000").