Archived

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

IceStorm availability and publishers

When publishing messages to IceStorm via a proxy, "ConnectionRefusedException" is thrown when IceStorm is unavailable (not listening on the expected endpoints). Would it be acceptable for publisher processes to employ an application-based "retry count" similar to what IceStorm uses for subscribers?

I observe that my publishers work normally again if manually kill IceStorm, then restart a new invocation on the same endpoints. This suggests to me that there is no state within the publisher proxy that binds it in any special way to original peer it was created for. If a subsequent, otherwise identical, peer happens to be created on the same endpoints, the proxy can talk to it as before.

I suppose I am free to use any application policy I care to? Halt the publisher on the first refusal, halt after N refusals or keep pounding away forever?

Regards,

Phil

Comments

  • benoit
    benoit Rennes, France
    Hi Phil,

    Yes, you can re-use the same proxy to retry the invocation and as long as the IceStorm endpoints don't change. Ice can also retry automatically (according to the Ice.RetryIntervals property) but you can also implement you're own custom retry.

    If your IceStorm endpoints were to change over time, you might want to look into deploying IceStorm with IceGrid and use indirect proxies in your publisher (indirect proxies don't contain endpoint information -- instead they use the IceGrid location mechanism to discover the endpoints of a given service).

    Cheers,
    Benoit.
  • OK, thanks.

    Are there any examples or articles I can read on deploying IceStorm with IceGrid?

    Phil
  • matthew
    matthew NL, Canada
    There are lots. The replication IceStorm demo uses IceGrid, and IceStorm was deployed with IceGrid (or its predecessor IcePack) in numerous newsletter articles (issue 11, 10, 9, 8, 7, 6, and 5).