Archived

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

Activation of IceStorm application

I have IceGrid deploying and activating the IceStorm service, but I can't see how to get IceGrid to activate the program that implements the publisher on-demand. The "exe" attribute is taken up with starting the "icebox" executable.

Is there a way to do this, or do I have to make other arrangements to start up the publisher program?

Comments

  • matthew
    matthew NL, Canada
    Take a look at the icestorm template in config/templates.xml. If you cannot figure it out from that, icestorm is used with icegrid in several of my newsletter articles. Take a look, for example, at the chat app.
  • I'm already using the template

    ...but it doesn't seem to allow for activating the Publisher program, only icebox.

    My application.xml is shown below. You'll see that I am activating icebox on demand. It's not clear to me how I can also activate my Publisher program. I have been combing through the newsletters and articles, but this doesn't seem to be addressed.


    <icegrid>

    <application name="IRS1MonData">

    <server-template id="IceStorm">
    <parameter name="topic-manager-endpoints" default="default"/>
    <parameter name="publish-endpoints" default="default"/>
    <parameter name="node-endpoints" default="default"/>
    <parameter name="instance-name"/>

    <icebox id="${instance-name}" exe="icebox" activation="on-demand">
    <service name="IceStorm" entry="IceStormService,33:createIceStorm">
    <dbenv name="${service}"/>
    <adapter name="${service}.TopicManager" endpoints="${topic-manager-endpoints}">
    <object identity="${instance-name}/TopicManager" type="::IceStorm::TopicManager"/>
    </adapter>
    <adapter name="${service}.Publish"
    endpoints="${publish-endpoints}"/>
    <adapter name="${service}.Node"
    endpoints="${node-endpoints}"/>
    <properties>
    <property name="${service}.InstanceName" value="${instance-name}"/>
    <property name="${service}.Trace.TopicManager" value="2"/>
    <property name="${service}.Trace.Topic" value="1"/>
    <property name="${service}.Trace.Subscriber" value="1"/>
    <property name="${service}.Trace.Election" value="1"/>
    </properties>
    </service>
    </icebox>
    </server-template>
    <node name="irs1mon">
    <server-instance template="IceStorm" instance-name="IRS1MonData"/>
    </node>

    </application>

    </icegrid>
  • Clarifying my question

    Let me put my question in terms of one of the example programs in the demos tar file.

    It is quite clear to me how to configure IceGrid to deploy the IceStorm service - there are many examples.

    However, what seems to be missing is a way to deploy the Publisher executable, so that it is activated on demand when the first Subscriber executable is run.

    This doesn't seem to be addressed in any newsletter article, or any forum thread that I can find.

    Thanks for any pointers.
  • bernard
    bernard Jupiter, FL
    Hi Philip,

    IceGrid manages servers with indirect object adapters, and can start such servers on demand. IceBox is an example of such a server.

    As far as Ice is concerned, a publisher is just an IceStorm client: it does not implement any object or host any object adapter, it just send messages to topics (implemented by IceStorm), and IceStorm then forwards these messages to subscribers (= objects hosted by object adapters).

    You can't instruct IceGrid to start an Ice client on demand. If you want to configure your publisher to start on demand, this publisher has to be a server with an indirect object adapter, and it's the first call to an object hosted by this server that would trigger its "on-demand" start.

    Hope this is clearer now!

    Bernard
  • All becomes clear

    Thanks for clearing this up for me, Bernard.