Determined by these ifs: ./daemon/executor.clj- (if (and (.isEmpty overflow-buffer) ./daemon/executor.clj- (or (not max-spout-pending) ./daemon/executor.clj- (< (.size pending) max-spout-pending))) ./daemon/executor.clj- (if active? ./daemon/executor.clj- (do ./daemon/executor.clj- (when-not @last-active ./daemon/executor.clj- (reset! last-active true) ./daemon/executor.clj- (log-message "Activating spout " component-id ":" (keys task-datas)) ./daemon/executor.clj- (fast-list-iter [^ISpout spout spouts] (.activate spout))) ./daemon/executor.clj- ./daemon/executor.clj: (fast-list-iter [^ISpout spout spouts] (.nextTuple spout)))
On 2014年3月6日, at 下午9:06, Tian Guo <[email protected]> wrote: > But what factors determine when the nextTuple() should be invoked? > > Thx! > > > 2014-03-06 13:36 GMT+01:00 James Xu <[email protected]>: > The caking of previous tuple has nothing to do with the invocation of > nextTuple(). > > On 2014年3月6日, at 下午8:19, Tian Guo <[email protected]> wrote: > >> >> Thanks for your advice! >> >> But my double still remains. Is the nextTuple method called only when the >> previous tuples are acked in the ack method? Anyone knows the internal >> strategy? >> >> Thx! >> >> Best, >> >> 2014-03-06 8:14 GMT+01:00 James Xu <[email protected]>: >> use Tick Tuple. >> >> On 2014年3月6日, at 上午4:28, Tian Guo <[email protected]> wrote: >> >>> I am developing some data analysis algorithms on top of Storm and have some >>> questions about the internal design of Storm. >>> >>> I want to simulate a sensor data yielding and processing in Storm, and >>> therefore I use Spout to push sensor data into the succeeding bolts at a >>> constant time interval via setting a sleep method in nextTuple method of >>> Spout. But from the experiment results, it appeared that spout didn't push >>> data at the specified rate. In the experiment, there was no bottleneck bolt >>> in the system. >>> >>> Therefore, my doubt is if the nextTuple method is called only when the >>> previous tuples are fully processed and acked in the ack method? >>> >>> If this is true, does it means that I cannot set a fixed time interval to >>> emit data? >>> >>> Thx a lot! >> >> > >
