Michael, I understand your solution, however, if bolt of type A "wins" the initialization, will bolts of type B see the same instance?
Sent from my Android phone On Dec 4, 2014 10:26 PM, "Eyal Golan" <[email protected]> wrote: > Thanks Michael and Ben ! > > Sent from my Android phone > On Dec 4, 2014 9:53 PM, "Flint, Ben" <[email protected]> wrote: > >> I’ve used Hazelcast for use cases like this with great success. It >> makes it relatively straightforward to implement a distributed data >> structure. >> >> From: Eyal Golan <[email protected]> >> Reply-To: "[email protected]" <[email protected]> >> Date: Thursday, December 4, 2014 at 11:40 AM >> To: "[email protected]" <[email protected]> >> Subject: Re: Shared static data between bolts >> >> Thanks! >> All the answers give me good idea. >> Here's why I need this list be sharable. >> One bolt needs the list for computation. >> Another bolt will periodically update the list. >> In other words, the list is changeable. >> >> I tried passing it in conf but there are some 3rd party libs in the >> wrapper. >> >> Anyway, I also need to improve the topology. Separate bolt to two etc. >> That way, it would be easier to handle that cache. >> >> One more question, I thought about giving hazelcast a try. >> Create local node and then the bolts will have clients. >> >> What do you think? >> >> Sent from my Android phone >> On Dec 4, 2014 9:14 PM, "Kushan Maskey" < >> [email protected]> wrote: >> >>> Hi Eyal, >>> >>> I had the similar issue earlier. Static objects are not a good way of >>> passing the variables around in Storm due to clustered nature of the Storm. >>> You will see null for all the static variables. >>> >>> This is how I implemented mine, for instance I wanted to pass around >>> the server properties such and host name and username/password. I read the >>> properties file and then created a map of these properties then set it into >>> the Config object. Like below. >>> >>> *In topology:* >>> >>> Map<Stirng, Stirng> map = new HashMap(); >>> map.put("hostname", "localhost"); >>> map.put("username", "testuser"); >>> map.put("password", "testpassord"); >>> map.put("port", "1234"); >>> >>> Config config = new Config(); >>> >>> config.put("MY_MAP", map) >>> *In Bolts:* >>> >>> public void prepare(Map stormConf, TopologyContext context) { >>> >>> HashMap<Stirng, Stirng> map = stormConfig.get("MY_MAP"); >>> >>> } >>> This how i resolved my problem.Try that if that helps. >>> -- >>> Kushan Maskey >>> 817.403.7500 >>> M. Miller & Associates <http://mmillerassociates.com/> >>> [email protected] >>> >>> On Thu, Dec 4, 2014 at 1:01 PM, Eyal Golan <[email protected]> wrote: >>> >>>> Hi all, >>>> I am newbie with Storm and having some issues with static objects in >>>> the topology. >>>> In the main class, where I set the topology, I also set a static >>>> object. It's actually a wrapper for a collection of strings. >>>> This object needs to he shared between different bolts. >>>> It's big so I want it to be only one instance. >>>> >>>> The problem is that when a bolt tries to get this static instance: >>>> example - MyMain.Shared... It's null. Although I instantiated it in the >>>> main method. >>>> >>>> I guess I'm doing something wrong. >>>> >>>> Thanks for any assistance. >>>> >>>> Eyal >>>> >>>> Sent from my Android phone >>>> >>> >>>
