Thanks Matthias , this clears things up for me.

On Fri, Sep 11, 2015 at 4:41 PM, Matthias J. Sax <[email protected]> wrote:

> Hi Ankur,
>
> If you declare a direct stream (setting the flag to true), you need to
> emit tuples via
>
>   collector.directEmit(...)
>
> methods (collector.emit(...) is not allowed for direct streams). Those
> methods require to specify the consumer task ID that should receive the
> tuple.
>
> Furthermore, when connecting a consumer to a direct stream, you need to
> specify
>
>   builder.setBolt(....).directGrouping()
>
> All other connection patterns are not allowed on direct stream.
>
> Direct streams have the advantage, that you have fine-grained controlled
> over the data distribution from producer to consumer. You can implement
> any imaginable distribution pattern. Of course, direct streams are much
> more difficult to handle. For example, you need to know the task IDs of
> subscribes consumers (those can be looked up on the TopologyContext
> fiven in Bolt.prepare)
>
> -Matthias
>
>
> On 09/11/2015 12:51 PM, Ankur Garg wrote:
> > Hi ,
> >
> > Looking at the OutputFieldsdeclare class , I see there is an overloaded
> > method for
> > declare with a boolean flag direct .
> >
> > If i use the declare method i.e declare(Fields fields) ,it sets this
> > boolean flag as false .
> >
> > I am not sure how storm interprets this boolean field internally while
> > processing with Spouts and Bolts .
> >
> > Can somebody explain me the significance of this flag ?
> >
> > Thanks
> > Ankur
>
>

Reply via email to