Google Summer of Code 2010 Proposal

Student

Charith Dhanushka Wickramarachchi

Email

charith.dhanushkaATgmail.com

Student Major

Computer Science and Engineering

Student Degree

Bachelor of Science (Engineering)

Organization

University of Moratuwa

Assigned Mentor

Hiranya Jayathilaka

Project title

Implementing a DeadLetter Channal for Apache Synapse

Abstract

Apache Synapse[1] is an Open Source ESB and a Mediation Framework which Support some Enterprise integration patterns.Its a lightweight framework with a asynchronous core which was design to support easy integration of systems and to perform well.Its said to be one of the fastest open source ESBs in world.

Dead Letter channel pattern is an Enterprise Application integration pattern which describe what actions to do when the messaging system fails to delivers a message.That actions include retrying and if that attempts fail ultimately deliver that message to the dead letter channel which will store the messages.

Detailed Description:

http://fusesource.com/docs/router/1.6/eip/images/dead_letter.gif

Figure 1 : DeadLetter Channel

Above diagram is the overview of the Dead letter channel. As shown in the diagram we can see if the message sending system fails to deliver the message to the intended user Dead letter processing system will take control over the message and try to re deliver it accoutring to a predefined re delivery policy.If that fails message will be delivered to the Dead letter channel and it archived.

Apache Synapse currently does not have a message archive mechanism build in to it so building a message store will be a major part in this project. Other than the Message storage to fully support this pattern we need to add a mechanism to configure re delivery policies in to the synapse fault handling mechanism.

Open source project like Apache Camal[2] FUSE Mediation Router [3]has support for this pattern so that implementations can be used as reference implementations for this project.

Project Features

  1. Message Store Implementation : Message Store will be a Top level synapse element.Which will be a pluggable implementation where users will be able to plug custom Message Stores in an easy way.
  2. Endpoint implementation Modification : feature will be added to the current endpoint implementation.Where users will be able to point to a message store with attribute "onFault".
  3. Monitoring API : Message Store will be exposing a Monitoring API to be used with Custom Monitoring Systems (ex : JMX)
  4. Message Store response sender : where Message store will be able to send responce to the original sender. (ex : failure notice)
  5. Simple redelivery mechanism where users can configure simple re-delivery policy.This will be extendible to use with WS-RM in future.
  6. User Documentation for use this Enterprise Integration pattern
  7. Mediator for Sequence Error handling using the Message Store.

In this project duration I'll be implementing two Concrete implementations of the Message Store.

  1. In Memory Message Store
  2. JMS based Message Store

Optional features (This features are out of scope of the GSoC time line.and marked as future implementations):

Sample Message Store Configuration

This is a sample Message store configuration

http://lh3.ggpht.com/_TAP3Nzxz-vQ/S7xDmlL4W_I/AAAAAAAAAJg/ZkKQpbc7MlA/msgstore_sample.png

Sample Endpoint Configuration after Proposed Modification

http://lh4.ggpht.com/_TAP3Nzxz-vQ/S7xDmh4Zm5I/AAAAAAAAAJk/Ly1zimCq2G4/endpoint_sample.png

Additional Information

Project Schedule

April 26 - May 8th :

Google have announced the first time period as the community bonding period.I'm planing to use this to interact with the mentor and the other developers in the community to get much more familiar with the Apache Synapse and address the design challenges of the project.and come up with a acceptable design.

May 8th - July 12th

This will be the longest phase of the project since in this phase I'll be implementing the most of the basic features of the Project.Features to be implemented in this Time period.

July 12-August 12

I'll be implementing the JMS based Message store. Re using the Message Store abstraction layers built before and also the implementation of Mediator for Sequence Error handling with Message store will be implemented.I'll be implementing A Synapse Sample to demonstrate the use of this pattern and the User documentation to add to the Synapse Sample Guide.

Biography

I am a Final year Undergraduate at Department of Computer Science and Engineering , University of Moratuwa Sri Lanka[4] .I have been involve in Open source development for about a year and i have contributed to the Apache Projects.This is my second Google Summer of code participation.In 2009 i did a project for Apache Axis2 Transport project. Which is implementing SMS Transport[5]for Apache Axis2[6]. It is now available with the resent Transport release.

I have a good experience in working with Apache projects and i have a good understanding of the Synapse code base.I have worked with technologies like Maven , Spring , JMX and I have a good understanding of Service Oriented Architecture.

Enterprise Application integration is one of my interested areas and I'm an open Source fan.I hope my experience will help me to get into this project quickly and finish this project and contribute it to the synapse so that it will add value to the project.

References

[1] Apache Synapse

[2]Apache Camal

[3] FUSE Mediation Router

[4] Department of Computer Science and Engineering , University of Moratuwa Srilanka

[5] SMS Transport http://ws'''DOT'''apache'''DOT'''org/commons/transport/sms'''DOT'''html

[6]Apache Axis2

Figure 1 :http://fusesource.com/docs/router/1.6/eip/images/dead_letter.gif

Discussion in Synapse developer mail list : http://apache.markmail.org/message/7eal53hsyjcqt4wd?q=[jira]+Created:+(SYNAPSE-618)+[GSoC]+Implement+a+Dead+Letter+Channel+for+Synapse