I'm using storm to process some data streams.
At the beginning I read an xml file where I find statements used in Esper bolts. Soon after I define my topology and run it on a cluster. Now, if I want to change a statement in a bolt, I have to modify the xml, stop the cluster, and restart it from the beginning.
Is possible a scenery that sees a thread that checks my xml and when finds new statements defined can update the Esper Bolt with the new statement while the cluster is going on?
I defined an Esper bolt as follows:
String statement = "select count(*) as userPerMinutes from event.win:time_batch(60 sec)"; EsperBolt esperBolt = new EsperBolt.Builder() .inputs().aliasComponent("user") .withField("field1").ofType(String.class) .withField("field2").ofType(Integer.class) .withField("field3").ofType(Long.class) .toEventType("event") .outputs().onDefaultStream().emit("userPerMinutes") .statements().add(statement) .build();
In a thread how can I access to this bolt and edit/add/remove its statement? Through the topology? And how?