Hi, Storm topology usually gets killed after the tuple timeout (storm kill [-w timeout_in_seconds] topology_name) assuming that the timeout_in_seconds is not passed as a parameter. Once the topology kill command is fired, the spout will not invoke the nextTuple() anymore, but it will wait to receive all the pending acknowledgements (which should be ideally received within the tuple timeout). If nextTuple() is not invoked anymore, no new tuples will be emitted.
I think with the aforementioned behaviour, you can kill the old topology and start the new one. However you need to check whether your queuing system will push the unacknowledged messages to the new topology also if it is launched before the tuple timeout interval(i.e. before the first topology is killed). Hope this helps. Richards Peter.