Hi, Lately I've been writing a new task component "ntask", which is directly based on quartz2 rather than having a dependency on Synapse, and also uses the coordination component for controlling distributing tasks in a cluster. To facilitate this, the group communication ability in the coordination component has been improved to contain a synchronous sendReceive call to implement RPC scenarios between peers in the group, which is needed in the task component. The flow simply works in the following steps,
* Register a task description "TaskInfo", which contains task trigger information as well. * Schedule a registered task with the given name. * Related task controlling operations like, reschedule, pause, resume, delete, get status, list tasks in a specific server etc.. The task functionality is mainly done using a "TaskManager" interface, which represents a task manager for a specific task type for a specific tenant. For example, for tasks to not to clash in a server which has ESB tasks and DSS tasks, the task type can be given to distinguish between the two. When a task is registered, the target server, the task needs to be scheduled can be specified by giving an implementation of the "TaskLocationResolver" interface, where given the task context, it must return the location of the server. There's a default task location resolver class used otherwise when not explicitly given, which simply scheduled all the tasks in an round robin fashion among the cluster. The failover scenarios are implemented where, if a node goes down, the leader node will identify it and schedule the orphaned tasks between remaining servers. Also, if the leader node itself goes down, another node will become the leader and reschedule the missing tasks and keep track of the running ones. The ntask component has a module called "solutions", which will contain most often used task implementation. I've added a simple web service invocation task implementation there, where in DSS itself, we derive that to create our own tasks. So if there are simple task implementations, they can be put into the solutions module, for reuse. The current ntask implementation is in-cooperated into the upcoming DSS 2.6.3 release, so the new tasks functionality can be tested from that if anyone's interested. Cheers, Anjana. -- *Anjana Fernando* Senior Software Engineer WSO2 Inc. | http://wso2.com lean . enterprise . middleware
_______________________________________________ Carbon-dev mailing list [email protected] http://mail.wso2.org/cgi-bin/mailman/listinfo/carbon-dev
