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

Reply via email to