Hi Sinthuja, I tested with two BAM servers pointing to its own cassandra (not clustered). I was not able to see the load balancing scenario where nearly equal amount of events are published into respective BAM nodes.
Following is the code that I have used. Please correct me if I have done something wrong. Urls defined in appfactory.xml * tcp://192.168.16.2:7614 <http://192.168.16.2:7614>,tcp://192.168.16.2:7624 <http://192.168.16.2:7624>* code for preparing receiver groups * AppFactoryConfiguration config = AppFactoryUtil .getAppfactoryConfiguration(); String EnableStatPublishing = config .getFirstProperty("BAM.EnableStatPublishing"); String bamServerURL = config.getFirstProperty("BAM.BAMServerURL"); String bamServerUserName = config .getFirstProperty("BAM.BAMUserName"); String bamServerPassword = config .getFirstProperty("BAM.BAMPassword"); AgentConfiguration agentConfiguration = new AgentConfiguration(); Agent agent = new Agent(agentConfiguration); ArrayList<ReceiverGroup> allReceiverGroups = new ArrayList<ReceiverGroup>(); ArrayList<String> receiverGroupUrls = DataPublisherUtil.getReceiverGroups(bamServerURL); for (String aReceiverGroupURL : receiverGroupUrls) { ArrayList<DataPublisherHolder> dataPublisherHolders = new ArrayList<DataPublisherHolder>(); String[] urls = aReceiverGroupURL.split(","); for (String aUrl : urls) { DataPublisherHolder aNode = new DataPublisherHolder(null, aUrl.trim(), bamServerUserName, bamServerPassword); dataPublisherHolders.add(aNode); } ReceiverGroup group = new ReceiverGroup(dataPublisherHolders, true); allReceiverGroups.add(group); } loadBalancingDataPublisher = new LoadBalancingDataPublisher(allReceiverGroups, agent);* Method for event publishing *public void publishEvents(Event event, String Stream, String version) throws AgentException, InterruptedException { loadBalancingDataPublisher.publish(Stream, version, event); }* Thanks GayanD On Wed, Oct 22, 2014 at 7:32 PM, Sinthuja Ragendran <[email protected]> wrote: > Hi gayan, > > In order to verify the loadbalancing of events in a round robin manner, > you can have two BAM nodes pointing to its own cassandra instance (not > clustered), and send the events to those BAM nodes. If your client is > configured correctly for load balancing scenario, then you will see each > bam nodes will have nearly equal amount of events stored in its respective > BAM nodes. This is just for testing purpose to verify, but of course in > real case cassandra will be clustered, hence finally even though the load > is balanced within receiver nodes it stores in the same cassandra cluster, > hence it's not observable from outside. > > Thanks, > Sinthuja. > > On Wed, Oct 22, 2014 at 4:53 AM, Gayan Dhanushka <[email protected]> wrote: > >> Hi all, >> >> I have been trying to move the AsyncDataPublisher used in App Factory to >> LoadBalancingDataPublisher to cater load balancing and failover. Even >> though [1] describes that it sends data to available receiver nodes in a >> round robin manner, I was only able to observe the failover scenario. >> >> Can somebody please explain ? >> >> [1] >> https://docs.wso2.com/display/BAM240/Setting+up+Multi+Receiver+and+Load+Balancing+Data+Agent#SettingupMultiReceiverandLoadBalancingDataAgent-Loadbalancingconfigurations >> >> Thanks >> GayanD >> >> -- >> Gayan Dhanuska >> Software Engineer >> http://wso2.com/ >> Lean Enterprise Middleware >> >> Mobile >> 071 666 2327 >> >> Office >> Tel : 94 11 214 5345 >> Fax : 94 11 214 5300 >> >> Twitter : https://twitter.com/gayanlggd >> > > > > -- > *Sinthuja Rajendran* > Senior Software Engineer <http://wso2.com/> > WSO2, Inc.:http://wso2.com > > Blog: http://sinthu-rajan.blogspot.com/ > Mobile: +94774273955 > > > -- Gayan Dhanuska Software Engineer http://wso2.com/ Lean Enterprise Middleware Mobile 071 666 2327 Office Tel : 94 11 214 5345 Fax : 94 11 214 5300 Twitter : https://twitter.com/gayanlggd
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
