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

IceStorm and filtering

Does IceStorm support any kind of filtering on a topic?

I'm trying to prototype a system where several Ice services are subscribing to the same topic but they don't necessarily get all the messages in the topic. I would like to be able to control it based on some meta data (maybe thru some key value pairs in the request context).

An alternative to this would be to do the filtering on the subscriber side. A subscriber gets all the messages but filters it before propagating the message. But that would be wasting network bandwidth cause they don't need to receive the message to begin with and also now every subscriber has to do the filtering instead of being centraliazed on IceStorm.

Another alternative would be for the publishers to publish to specific subscribers. This kinda complicates the system. Now the subscriber has to bypass IceStorm and talk directly to the publisher to let it know about the filter. The publisher becomes more coupled to the subscriber.

Any thoughts/suggestions?



  • xdm
    xdm La Coruña, Spain
    Hi Budyanto,

    Currently is not possible to do the filtering inside IceStorm.

    One way to implement filtering is to use a session, instead of subscribe directly to IceStorm, the session will do the filtering for the specific client, and then send the filtered messages to the client, this is similar to do the filtering in the client application, but if session servants are hosted in the IceStorm network, the bandwidth will not be a problem.

    Using several topics could be an other option, and i think for trivial filtering like subscriber groups will be the easiest, but for non trivial filtering when you need more knowledge to filter messages, this will result in a complex application, because instead of implement filtering in one point you have it coupled with subscribers and publishers.