Hi Nirmal, Cool implementation, I'm trying to understand this with Autoscaler side message processing requirements. So one question,
On Fri, Oct 18, 2013 at 5:46 PM, Nirmal Fernando <[email protected]>wrote: > Hi All, > > Now $subject! Following is the MessageProcessor interface as of now. > > *package org.apache.stratos.messaging.message.processor; > > import org.apache.stratos.messaging.domain.topology.Topology; > > /** > * Message processor interface. Every Message Processor should implement > this. > */ > public interface MessageProcessor { > > /** > * Link a message processor and its successor, if there's any. > * @param nextProcessor > */ > public abstract void setNext(MessageProcessor nextProcessor); > > /** > * Message processing and delegating logic. > * @param type type of the message. > * @param message real message body. > * @param topology Topology that will get updated. > * @return whether the processing was successful or not. > */ > public abstract boolean process(String type, String message, Topology > topology); > * > MessageProcessor is a common interface for all the messages. How do we handle messages that are not involved with Topology when the Topology is one parameter? E.g. > * }* > > I've implemented initial Message Processors: > > *├── ClusterCreatedEventProcessor.java > ├── ClusterRemovedEventProcessor.java > ├── CompleteTopologyEventProcessor.java > ├── MemberActivatedEventProcessor.java > ├── MemberStartedEventProcessor.java > ├── MemberSuspendedEventProcessor.java > ├── MemberTerminatedEventProcessor.java > ├── ServiceCreatedEventProcessor.java > └── ServiceRemovedEventProcessor.java* > > Now, it is up to the Message Processor Delegator to build the Message > processor chain. > > *// instantiate all the relevant processors > ServiceCreatedEventProcessor processor1 = new > ServiceCreatedEventProcessor(); > ServiceRemovedEventProcessor processor2 = new > ServiceRemovedEventProcessor(); > ClusterCreatedEventProcessor processor3 = new > ClusterCreatedEventProcessor(); > > > // link all the relevant processors in the required order > processor1.setNext(processor2); > processor2.setNext(processor3); > processor3.setNext(processor4);* > > and also it's a duty of the deligator to start the flow: > > *boolean hasProcessed = processor1.process(type, json, > TopologyManager.getTopology());* > > After the flow started, Processor who is capable of handling the message > would eventually receive it and will process the message and other > Processors will simply delegate the message to its successor. > > I've done necessary changes and committed. > > -- > Best Regards, > Nirmal > > Nirmal Fernando. > PPMC Member & Committer of Apache Stratos, > Senior Software Engineer, WSO2 Inc. > > Blog: http://nirmalfdo.blogspot.com/ > -- -- Lahiru Sandaruwan Software Engineer, Platform Technologies, WSO2 Inc., http://wso2.com lean.enterprise.middleware email: [email protected] cell: (+94) 773 325 954 blog: http://lahiruwrites.blogspot.com/ twitter: http://twitter.com/lahirus linked-in: http://lk.linkedin.com/pub/lahiru-sandaruwan/16/153/146
