Where is input.rabbitmq.port defined? I would guess that it is a file that is being read as a resource and that the resource is not available on the worker ....but I can only guess, not know any specifics about the code in question...
On Mon, Oct 19, 2015 at 8:27 AM Ankur Garg <ankurga...@gmail.com> wrote: > Actually its not only yml , infact none of the dependencies are getting > injected . Perhaps , it appears to me that it is not able to read Spring > Annotations . > > Btw , do u know how to debug my application deployed on remote cluster > remotely from Eclipse. > > Thanks > Ankur > > On Mon, Oct 19, 2015 at 8:22 PM, Ravi Sharma <ping2r...@gmail.com> wrote: > >> you may have to tell Spring that ur .yaml file is ur resource file. >> >> Ravi. >> >> On Mon, Oct 19, 2015 at 3:25 PM, Ankur Garg <ankurga...@gmail.com> wrote: >> >>> Hi Ravi , >>> >>> Need your help . So I created a local cluster and deployed my topology >>> to it . Inside my Spout and Bolts , I am launching a Spring Boot >>> application wrapped inside a singleton to initialise my context . >>> Unfortunately , it appears to me that it is not working :(((( and >>> annotations like @EnableAutoConfiguration is not picking up yml files from >>> the classpath and injecting their values in the bean. And I am getting >>> exceptions like >>> >>> Error creating bean with name 'inputQueueManager': Injection of >>> autowired dependencies failed; nested exception is >>> org.springframework.beans.factory.BeanCreationException: Could not autowire >>> field: private int >>> mqclient.rabbitmq.manager.impl.InputQueueManagerImpl.rabbitMqPort; nested >>> exception is org.springframework.beans.TypeMismatchException: Failed to >>> convert value of type 'java.lang.String' to required type 'int'; nested >>> exception is java.lang.NumberFormatException: For input string: >>> "${input.rabbitmq.port}" at >>> >>> has anyone here ever tried injecting dependencies from Spring . I am not >>> sure why this is not working . >>> >>> It works like a charm in Local Cluster and now I am not passing context >>> as a constructor argument , rather declaring and initializing it inside >>> each spout and bolts :( . >>> >>> Is there any reason why Spring Annotations dont work inside a Remote >>> Cluster . >>> >>> Need help urgently here . >>> >>> Thanks >>> Ankur >>> >>> On Sun, Oct 11, 2015 at 1:01 PM, Ankur Garg <ankurga...@gmail.com> >>> wrote: >>> >>>> I think I don't need to Autowire beans inside my spout and bolts . >>>> >>>> All I want my context to be available . Since I use Spring Boot , I am >>>> delegating it to initialise all the beans and set up every bean (reading >>>> yml file and create DB connections , connections to Message brokers etc ) . >>>> >>>> On my local cluster I am passing it as a constructor argument to Spouts >>>> and Bolts . Since all r running in same jvm its available to all spouts and >>>> bolts . >>>> >>>> But in a distributed cluster , this will blow up as Context is not >>>> serializable and cannot be passed like above . >>>> >>>> So the problem is only to make this context available once per jvm . >>>> Hence I thought I will wrap it under a singleton and make this available to >>>> all spouts and bolts per jvm. >>>> >>>> Once I have this context initialized and loaded all I need to do is to >>>> get the bean which I will do the same way I am doing inside local cluster >>>> spouts and bolts . >>>> >>>> >>>> >>>> >>>> >>>> On Sun, Oct 11, 2015 at 12:46 PM, Ravi Sharma <ping2r...@gmail.com> >>>> wrote: >>>> >>>>> Yes ur assumption is right >>>>> Jvm1 will create application contexts say ac1 >>>>> >>>>> And jvm2 will create another application instance ac2 >>>>> >>>>> And all of it can be done via singleton classes. >>>>> >>>>> All bolts and spouts in same jvm instance need to access same >>>>> application context. >>>>> >>>>> I have done same in cluster and it works >>>>> >>>>> Remember all spring beans need to be transient and also u need to set >>>>> required=false in case u r going create spout and bolt using spring >>>>> >>>>> Public class mybolt { >>>>> @aurowired(required=false) >>>>> Private transient MyServiceBean myServiceBean; >>>>> >>>>> .... >>>>> ... >>>>> } >>>>> >>>>> Ravi >>>>> On 11 Oct 2015 07:59, "Ankur Garg" <ankurga...@gmail.com> wrote: >>>>> >>>>>> Also , I think there can be some instances of spouts/bolts running on >>>>>> JVM 1 and some on JVM 2 and so on... >>>>>> >>>>>> Is it possible for spouts and bolts running on same jvm to access >>>>>> same applicationContext . >>>>>> >>>>>> I am thinking that I can make the place where I launch my spring >>>>>> Boot application inside a singleton class , and so all the spouts and >>>>>> bolts running on say JVM1 will have access to same context (instead of >>>>>> launching it in all spouts and bolts) . And for those in JVM 2 they will >>>>>> still initialise it once and all the rest will get the same application >>>>>> Context . >>>>>> >>>>>> But all above is theoretical assumption . I still need to try it out >>>>>> (unfortunately i dont have a cluster setup at my end) but if possible >>>>>> please let me know if this can work . >>>>>> >>>>>> Thanks >>>>>> Ankur >>>>>> >>>>>> On Sun, Oct 11, 2015 at 11:48 AM, Ankur Garg <ankurga...@gmail.com> >>>>>> wrote: >>>>>> >>>>>>> Thanks for replying Ravi . >>>>>>> >>>>>>> I think your suggestion to make wrapper to read json or xml is a >>>>>>> very nice Idea indeed . >>>>>>> >>>>>>> But , the problem for me here is to have the context (with all beans >>>>>>> loaded and initialized ) available inside the Spouts and Bolts and that >>>>>>> means inside every running instance of Spouts and Bolts which may be >>>>>>> running on different machines and different jvm. >>>>>>> >>>>>>> Agree that when defining topology I dont need Spring Context as I >>>>>>> just have to define spouts and bolts there. I used context here to send >>>>>>> them to spout and bolt through constructor but it appears from comments >>>>>>> above that it wont work on distributed cluster . >>>>>>> >>>>>>> So , is there some way that once topology gets submitted to run in a >>>>>>> distributed cluster , I can initialize my context there and someway they >>>>>>> are available to all Spouts and Bolts ..Basically some shared location >>>>>>> where my application Context can be initialized (once and only once) and >>>>>>> this context can be accessed by >>>>>>> all instances of Spouts and Bolts ? >>>>>>> >>>>>>> Thanks >>>>>>> >>>>>>> On Sun, Oct 11, 2015 at 11:20 AM, Ravi Sharma <ping2r...@gmail.com> >>>>>>> wrote: >>>>>>> >>>>>>>> Basically u will have two context defined at different time/phase >>>>>>>> >>>>>>>> When u r about to submit the topology, u need to build topology, >>>>>>>> that context only need information about spouts and bolts. You don't >>>>>>>> need >>>>>>>> any application bean like database accessories or ur services etc, as >>>>>>>> at >>>>>>>> this level u r not running ur application but u r just creating a >>>>>>>> topology >>>>>>>> and defining how bolts and spouts are connected to each other etc etc >>>>>>>> >>>>>>>> Now once topology is submitted, topology will be moved to one of >>>>>>>> the supervisor node and will start running, all spouts and bolts will >>>>>>>> be >>>>>>>> initialized, at this moment u will need ur application context, which >>>>>>>> doesn't need ur earlier topology context >>>>>>>> >>>>>>>> So I will suggest keep both context separate. >>>>>>>> >>>>>>>> Topology is not complex to build, smaller topology can be built via >>>>>>>> code only, I. E. Which bolt listening to which spout, but if u want to >>>>>>>> go >>>>>>>> with good design, I say just write a small wrapper to read some json >>>>>>>> where >>>>>>>> u can define ur bolts and spouts and use that to build topology (u can >>>>>>>> use >>>>>>>> spring but it's not much needed) >>>>>>>> >>>>>>>> In past I have done it using both json setting (without spring) and >>>>>>>> xml setting (with spring) both works good >>>>>>>> >>>>>>>> Ravi >>>>>>>> On 11 Oct 2015 06:38, "Ankur Garg" <ankurga...@gmail.com> wrote: >>>>>>>> >>>>>>>>> Oh The problem here is I have many beans and which need to be >>>>>>>>> initialized (some are reading conf from yml files , database >>>>>>>>> connection , >>>>>>>>> thread pool initialization etc) . >>>>>>>>> >>>>>>>>> >>>>>>>>> Now , I have written a spring boot application which takes care of >>>>>>>>> all the above and I define my topology inside one of the beans , Here >>>>>>>>> is my >>>>>>>>> bean >>>>>>>>> >>>>>>>>> @Autowired >>>>>>>>> ApplicationContext appContext; >>>>>>>>> >>>>>>>>> @Bean >>>>>>>>> public void submitTopology() throws >>>>>>>>> AlreadyAliveException,InvalidTopologyException { >>>>>>>>> >>>>>>>>> TopologyBuilder builder = new TopologyBuilder(); >>>>>>>>> >>>>>>>>> builder.setSpout("rabbitMqSpout", new RabbitListnerSpout( >>>>>>>>> appContext), 10); >>>>>>>>> >>>>>>>>> builder.setBolt("mapBolt", new GroupingBolt(appContext), >>>>>>>>> 10).shuffleGrouping("rabbitMqSpout"); >>>>>>>>> >>>>>>>>> builder.setBolt("reduceBolt", new PublishingBolt(appContext), >>>>>>>>> 10).shuffleGrouping("mapBolt"); >>>>>>>>> >>>>>>>>> Config conf = new Config(); >>>>>>>>> >>>>>>>>> conf.registerSerialization(EventBean.class); // To be registered >>>>>>>>> with Kyro for Storm >>>>>>>>> >>>>>>>>> conf.registerSerialization(InputQueueManagerImpl.class); >>>>>>>>> >>>>>>>>> conf.setDebug(true); >>>>>>>>> >>>>>>>>> conf.setMessageTimeoutSecs(200); >>>>>>>>> >>>>>>>>> LocalCluster cluster = new LocalCluster(); >>>>>>>>> >>>>>>>>> cluster.submitTopology("test", conf, builder.createTopology()); >>>>>>>>> >>>>>>>>> } >>>>>>>>> >>>>>>>>> >>>>>>>>> When this bean is initialized , I already have appContext >>>>>>>>> initialized by my Spring Boot Application . So , the thing is , I am >>>>>>>>> using >>>>>>>>> SpringBoot to initialize and load my context with all beans . >>>>>>>>> >>>>>>>>> Now this is the context which I want to leverage in my spouts and >>>>>>>>> bolts . >>>>>>>>> >>>>>>>>> So , if what I suggested earlier does not work on Storm >>>>>>>>> Distributed Cluster , I need to find a way of initializing my >>>>>>>>> AppContext >>>>>>>>> somehow:( >>>>>>>>> >>>>>>>>> I would be really thankful if anyone here can help me :( >>>>>>>>> >>>>>>>>> >>>>>>>>> Thanks >>>>>>>>> >>>>>>>>> Ankur >>>>>>>>> >>>>>>>>> On Sun, Oct 11, 2015 at 5:54 AM, Javier Gonzalez < >>>>>>>>> jagon...@gmail.com> wrote: >>>>>>>>> >>>>>>>>>> The local cluster runs completely within a single JVM AFAIK. The >>>>>>>>>> local cluster is useful for development, testing your topology, etc. >>>>>>>>>> The >>>>>>>>>> real deployment has to go through nimbus, run on workers started by >>>>>>>>>> supervisors on one or more nodes, etc. Kind of difficult to simulate >>>>>>>>>> all >>>>>>>>>> that on a single box. >>>>>>>>>> >>>>>>>>>> On Sat, Oct 10, 2015 at 1:45 PM, Ankur Garg <ankurga...@gmail.com >>>>>>>>>> > wrote: >>>>>>>>>> >>>>>>>>>>> Oh ...So I will have to test it in a cluster. >>>>>>>>>>> >>>>>>>>>>> Having said that, how is local cluster which we use is too >>>>>>>>>>> different from normal cluster.. Ideally ,it shud simulate normal >>>>>>>>>>> cluster.. >>>>>>>>>>> On Oct 10, 2015 7:51 PM, "Ravi Sharma" <ping2r...@gmail.com> >>>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>>> Hi Ankur, >>>>>>>>>>>> local it may be working but It wont work in Actual cluster. >>>>>>>>>>>> >>>>>>>>>>>> Think about SpringContext is collection of your so many >>>>>>>>>>>> resoucres, like Database connections , may be HTTP connections , >>>>>>>>>>>> Thread >>>>>>>>>>>> pools etc. >>>>>>>>>>>> These things wont get serialised and just go to other machines >>>>>>>>>>>> and start working. >>>>>>>>>>>> >>>>>>>>>>>> SO basically in init methods of bolt and spout, you need to >>>>>>>>>>>> call some singloton class like this >>>>>>>>>>>> >>>>>>>>>>>> ApplicationContext ac = >>>>>>>>>>>> SingletonApplicationContext.getContext(); >>>>>>>>>>>> >>>>>>>>>>>> SingletonApplicationContext will have a static variable >>>>>>>>>>>> ApplicationContext and in getContext you will check if static >>>>>>>>>>>> variable has >>>>>>>>>>>> been initialised if not then u will initilize it, and then return >>>>>>>>>>>> it(normal >>>>>>>>>>>> Singleton class) >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Now when Topolgy will move to any other node, Bolt and spouts >>>>>>>>>>>> will start and first init call will initialize it and other >>>>>>>>>>>> bolt/spouts >>>>>>>>>>>> will just use that. >>>>>>>>>>>> >>>>>>>>>>>> As John mentioned, its very important to mark all Spring beans >>>>>>>>>>>> and Context as transient. >>>>>>>>>>>> >>>>>>>>>>>> Hope it helps. >>>>>>>>>>>> >>>>>>>>>>>> Ravi. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Sat, Oct 10, 2015 at 6:25 AM, Ankur Garg < >>>>>>>>>>>> ankurga...@gmail.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Hi Javier , >>>>>>>>>>>>> >>>>>>>>>>>>> So , I am using a Local cluster on my dev machine where I am >>>>>>>>>>>>> using Eclipse . Here , I am passing Springs ApplicationContext as >>>>>>>>>>>>> constructor argument to spouts and bolts . >>>>>>>>>>>>> >>>>>>>>>>>>> TopologyBuilder builder = new TopologyBuilder(); >>>>>>>>>>>>> >>>>>>>>>>>>> builder.setSpout("rabbitMqSpout", new RabbitListnerSpout( >>>>>>>>>>>>> appContext), 10); >>>>>>>>>>>>> >>>>>>>>>>>>> builder.setBolt("mapBolt", new GroupingBolt(appContext), >>>>>>>>>>>>> 10).shuffleGrouping("rabbitMqSpout"); >>>>>>>>>>>>> >>>>>>>>>>>>> builder.setBolt("reduceBolt", new PublishingBolt(appContext), >>>>>>>>>>>>> 10).shuffleGrouping("mapBolt"); >>>>>>>>>>>>> >>>>>>>>>>>>> Config conf = new Config(); >>>>>>>>>>>>> >>>>>>>>>>>>> conf.registerSerialization(EventBean.class); / >>>>>>>>>>>>> >>>>>>>>>>>>> conf.registerSerialization(InputQueueManagerImpl.class); >>>>>>>>>>>>> >>>>>>>>>>>>> conf.setDebug(true); >>>>>>>>>>>>> >>>>>>>>>>>>> LocalCluster cluster = new LocalCluster(); >>>>>>>>>>>>> >>>>>>>>>>>>> cluster.submitTopology("test", conf, >>>>>>>>>>>>> builder.createTopology()); >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> And in my spouts and Bolts , >>>>>>>>>>>>> >>>>>>>>>>>>> I make my Application Context variable as static . So when it >>>>>>>>>>>>> is launched by c;uster.submitTopology , my context is still >>>>>>>>>>>>> avalilable >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> private static ApplicationContext ctx; >>>>>>>>>>>>> >>>>>>>>>>>>> public RabbitListnerSpout(ApplicationContext appContext) { >>>>>>>>>>>>> >>>>>>>>>>>>> LOG.info("RabbitListner Constructor called"); >>>>>>>>>>>>> >>>>>>>>>>>>> ctx = appContext; >>>>>>>>>>>>> >>>>>>>>>>>>> } >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> @SuppressWarnings("rawtypes") >>>>>>>>>>>>> >>>>>>>>>>>>> @Override >>>>>>>>>>>>> >>>>>>>>>>>>> public void open(Map conf, TopologyContext >>>>>>>>>>>>> context,SpoutOutputCollector >>>>>>>>>>>>> collector) { >>>>>>>>>>>>> >>>>>>>>>>>>> LOG.info("Inside the open Method for RabbitListner Spout"); >>>>>>>>>>>>> >>>>>>>>>>>>> inputManager = (InputQueueManagerImpl) ctx >>>>>>>>>>>>> .getBean(InputQueueManagerImpl.class); >>>>>>>>>>>>> >>>>>>>>>>>>> notificationManager = (NotificationQueueManagerImpl) ctx >>>>>>>>>>>>> .getBean(NotificationQueueManagerImpl.class); >>>>>>>>>>>>> >>>>>>>>>>>>> eventExchange = ctx.getEnvironment().getProperty( >>>>>>>>>>>>> "input.rabbitmq.events.exchange"); >>>>>>>>>>>>> >>>>>>>>>>>>> routingKey = ctx.getEnvironment().getProperty( >>>>>>>>>>>>> "input.rabbitmq.events.routingKey"); >>>>>>>>>>>>> >>>>>>>>>>>>> eventQueue = ctx.getEnvironment().getProperty( >>>>>>>>>>>>> "input.rabbitmq.events.queue"); >>>>>>>>>>>>> >>>>>>>>>>>>> _collector = collector; >>>>>>>>>>>>> >>>>>>>>>>>>> LOG.info("Exiting the open Method for RabbitListner Spout"); >>>>>>>>>>>>> >>>>>>>>>>>>> } >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> This is working like a charm (my ApplicationContext is >>>>>>>>>>>>> initialized seperately ) . As we all know , ApplicationContext is >>>>>>>>>>>>> not >>>>>>>>>>>>> serializable . But this works well in LocalCluster. >>>>>>>>>>>>> >>>>>>>>>>>>> My assumption is that it will work in a seperate Cluster too . >>>>>>>>>>>>> Is my assumption correct ?? >>>>>>>>>>>>> >>>>>>>>>>>>> On Fri, Oct 9, 2015 at 9:04 PM, Javier Gonzalez < >>>>>>>>>>>>> jagon...@gmail.com> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> IIRC, only if everything you use in your spouts and bolts is >>>>>>>>>>>>>> serializable. >>>>>>>>>>>>>> On Oct 6, 2015 11:29 PM, "Ankur Garg" <ankurga...@gmail.com> >>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hi Ravi , >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I was able to make an Integration with Spring but the >>>>>>>>>>>>>>> problem is that I have to autowire for every bolt and spout . >>>>>>>>>>>>>>> That means >>>>>>>>>>>>>>> that even if i parallelize spout and bolt it will get started >>>>>>>>>>>>>>> to each >>>>>>>>>>>>>>> instance . Is there some way that I only have to do for bolts >>>>>>>>>>>>>>> and spouts >>>>>>>>>>>>>>> once (I mean if I parallelize bolts or spouts individually it >>>>>>>>>>>>>>> can share the >>>>>>>>>>>>>>> conf from somewhere) . IS this possible?? >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thanks >>>>>>>>>>>>>>> Ankur >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Tue, Sep 29, 2015 at 7:57 PM, Ravi Sharma < >>>>>>>>>>>>>>> ping2r...@gmail.com> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Yes this is for annotation also... >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> you can call this method in prepare() method of bolt and >>>>>>>>>>>>>>>> onOpen() method >>>>>>>>>>>>>>>> in every Spout and make sure you don't use any autowire >>>>>>>>>>>>>>>> bean before this >>>>>>>>>>>>>>>> call. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Ravi. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On Tue, Sep 29, 2015 at 2:22 PM, Ankur Garg < >>>>>>>>>>>>>>>> ankurga...@gmail.com> wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> > Hi Ravi , >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> > Thanks for your reply . I am using annotation based >>>>>>>>>>>>>>>> configuration and using >>>>>>>>>>>>>>>> > Spring Boot. >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> > Any idea how to do it using annotations ? >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> > On Tue, Sep 29, 2015 at 6:41 PM, Ravi Sharma < >>>>>>>>>>>>>>>> ping2r...@gmail.com> wrote: >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> > > Bolts and Spouts are created by Storm and not known to >>>>>>>>>>>>>>>> Spring Context. >>>>>>>>>>>>>>>> > You >>>>>>>>>>>>>>>> > > need to manually add them to SpringContext, there are >>>>>>>>>>>>>>>> few methods >>>>>>>>>>>>>>>> > available >>>>>>>>>>>>>>>> > > i.e. >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> SpringContext.getContext().getAutowireCapableBeanFactory().autowireBeanProperties(this, >>>>>>>>>>>>>>>> > > AutowireCapableBeanFactory.AUTOWIRE_AUTODETECT, false); >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> > > SpringContext is my own class where i have injected >>>>>>>>>>>>>>>> SpringContext so >>>>>>>>>>>>>>>> > > SpringContext.getContext() returns the actuall Spring >>>>>>>>>>>>>>>> Context >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> > > Ravi. >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> > > On Tue, Sep 29, 2015 at 1:03 PM, Ankur Garg < >>>>>>>>>>>>>>>> ankurga...@gmail.com> >>>>>>>>>>>>>>>> > wrote: >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> > > > Hi , >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> > > > I am building a Storm topology with set of Spouts and >>>>>>>>>>>>>>>> Bolts and also >>>>>>>>>>>>>>>> > > using >>>>>>>>>>>>>>>> > > > Spring for Dependency Injection . >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> > > > Unfortunately , none of my fields are getting >>>>>>>>>>>>>>>> autowired even though I >>>>>>>>>>>>>>>> > > have >>>>>>>>>>>>>>>> > > > declared all my spouts and Bolts as @Components . >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> > > > However the place where I am declaring my topology , >>>>>>>>>>>>>>>> Spring is working >>>>>>>>>>>>>>>> > > fine >>>>>>>>>>>>>>>> > > > . >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> > > > Is it because cluster.submitTopology("test", conf, >>>>>>>>>>>>>>>> > > > builder.createTopology()) >>>>>>>>>>>>>>>> > > > submits the topology to a cluster (locally it spawns >>>>>>>>>>>>>>>> different thread >>>>>>>>>>>>>>>> > > for >>>>>>>>>>>>>>>> > > > Spouts and Bolts) that Autowiring is not working? >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> > > > Please suggest . >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Javier González Nicolini >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>> >>>>>> >>>> >>> >> >