Google Summer of Code 2010 Proposal
Student |
Charith Dhanushka Wickramarachchi |
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:
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
- 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.
- 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".
- Monitoring API : Message Store will be exposing a Monitoring API to be used with Custom Monitoring Systems (ex : JMX)
- Message Store response sender : where Message store will be able to send responce to the original sender. (ex : failure notice)
- Simple redelivery mechanism where users can configure simple re-delivery policy.This will be extendible to use with WS-RM in future.
- User Documentation for use this Enterprise Integration pattern
- Mediator for Sequence Error handling using the Message Store.
In this project duration I'll be implementing two Concrete implementations of the Message Store.
- In Memory Message Store
- JMS based Message Store
Optional features (This features are out of scope of the GSoC time line.and marked as future implementations):
- Data source based Message Store
Sample Message Store Configuration
This is a sample Message store configuration
Sample Endpoint Configuration after Proposed Modification
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.
- Synapse Top Level Message Store Implementation. (This include implementing feature 1,4,5 in above.)
- Endpoint implementation Modification
- Monitoring API and it will be integrated with JMX support in Synapse.
- In-memory Message Store.
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
[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