Archived

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

about IceStorm

"icebox --Ice.Config=config_service" this command is in my config file of IceStorm,
it cann't work well in the version of Ice-1.5.1,but can work well in Ice-1.3.0,
what's the reason?And how can I modify it?

another question is about IceStorm:

I think there are three parts in IceStorm ,one is publisher, one is subcriber,
and the last is the configure environment with files "config" and "config_service"
which contain the port client and server to connect,etc;I will call the configure environment "server"(maybe you called it topicManager,in my project it is a *.bat ,like a console . Did I discribe it clearly? do you understand?).


If there is one publisher ,one subscriber,one server, I succeed receiving the message from publisher in subscriber.
now the question is like this:
If there are 100 publishers(in 100 applications,and in on computer),such as P1,P2,P3,......P100,
and there are 100 subscriber (in 100 applications,and in another computer),such as S1,S2,....S100,
and there is one server, and they are using a same topic"topic", what can I do to make P1 receive message just only from S1,
and P2 receive message just from S2,and so on.

Thank you very much.


another question:
is there a way to get all topics in publisher or subscriber?

Comments

  • mes
    mes California
    Re: about IceStorm
    Originally posted by freshman
    "icebox --Ice.Config=config_service" this command is in my config file of IceStorm,
    it cann't work well in the version of Ice-1.5.1,but can work well in Ice-1.3.0,
    what's the reason?And how can I modify it?
    You didn't provide any information about why it's not working - what happens when you try to start the server? Do you get an exception? If so, which one?

    Note that the configuration file probably contains a property like this:

    IceBox.Service.IceStorm=IceStormService,20:create --Ice.Config=config

    The "20" in this property indicates the Ice version. Check your configuration file to see if you need to change this property to reflect the version of Ice you are using (i.e., for Ice 1.5.1, it should be "15").
    now the question is like this:
    If there are 100 publishers(in 100 applications,and in on computer),such as P1,P2,P3,......P100,
    and there are 100 subscriber (in 100 applications,and in another computer),such as S1,S2,....S100,
    and there is one server, and they are using a same topic"topic", what can I do to make P1 receive message just only from S1,
    and P2 receive message just from S2,and so on.
    IceStorm does not currently provide any filtering capabilities. If a subscriber only wants to receive messages from one publisher, then perhaps you shouldn't be using IceStorm but instead should let the publisher and subscriber communicate directly. Alternatively, you could create a topic for each publisher, and then the subscriber can subscribe only to that topic. If a subscriber needs to receive messages from all publishers, then you can use links to create a federated topic.
    another question:
    is there a way to get all topics in publisher or subscriber?
    Use the retrieveAll operation on the topic manager interface.

    Take care,
    - Mark
  • Thank you mes

    the version problem:
    the command is :icebox --Ice.Config=config_service and the config_service file is :
    #
    # The IceBox server endpoint configuration
    #
    IceBox.ServiceManager.Endpoints=tcp -p 9998

    #
    # The IceStorm service
    #
    IceBox.Service.IceStorm=IceStormService,15:create --Ice.Config=config
    IceBox.DBEnvName.IceStorm=db

    #
    # Warn about connection exceptions
    #
    Ice.Warn.Connections=1

    #
    # Network Tracing
    #
    # 0 = no network tracing
    # 1 = trace connection establishment and closure
    # 2 = like 1, but more detailed
    # 3 = like 2, but also trace data transfer
    #
    Ice.Trace.Network=1

    #
    # Protocol Tracing
    #
    # 0 = no protocol tracing
    # 1 = trace protocol messages
    #
    Ice.Trace.Protocol=1


    the exception is :

    warning: unknown property: IceBox.DBEnvName.IceStorm
    [ icebox: Network: accepting tcp connections at 192.168.82.148:9998 ]
    [ icebox-IceStorm: Network: accepting tcp connections at 192.168.82.148:10000 ]
    [ icebox-IceStorm: Network: accepting tcp connections at 192.168.82.148:1154 ]
    [ icebox-IceStorm: Berkeley DB: DbEnv "IceStorm": IceStorm: No such file or dire
    ctory ]
    [ icebox-IceStorm: Berkeley DB: DbEnv "IceStorm": IceStorm\log.0000000001: No su
    ch file or directory ]
    [ icebox-IceStorm: Berkeley DB: DbEnv "IceStorm": PANIC: No such file or directo
    ry ]
    [ icebox-IceStorm: Berkeley DB: DbEnv "IceStorm": PANIC: DB_RUNRECOVERY: Fatal e
    rror, run database recovery ]
    [ icebox-IceStorm: Berkeley DB: DbEnv "IceStorm": IceStorm: No such file or dire
    ctory ]
    icebox: error: ServiceManager: exception while starting service IceStorm:
    SharedDbEnv.cpp:352: Freeze::DatabaseException:
    DbEnv::open: DB_RUNRECOVERY: Fatal error, run database recovery
    [ icebox: Network: stopping to accept tcp connections at 192.168.82.148:9998 ]

    What's wrong with me?

    another question:

    how many topics can the server manage?(the max,could it manage 100 topics?)
  • mes
    mes California
    You need to use the following property in config_service:

    Freeze.DbEnv.IceStorm.DbHome=db

    The property IceBox.DBEnvName.IceStorm is no longer supported, as indicated by the warning message.

    Note that the "db" directory must already exist.

    For an example, see demo/IceStorm/clock.

    There is no upper limit on the number of topics that a single IceStorm service can support. It really depends on the volume of messages being processed by the service, and that is something only you can predict. I suggest that you exercise the service with a realistic load and see how it performs. It may be necessary for you to use federated topics in order to distribute the load across several hosts.

    Take care,
    - Mark
  • OK,I know ,thank you

    OK,I know ,thank you