Channels ▼

Eric Bruno

Dr. Dobb's Bloggers

What is Apache Synapse?

June 05, 2008

I have a background in developing messaging-based systems with JMS, as well as with Enterprise Service Bus (ESB) software. I've also written on both topics for Dr. Dobb's.

{readmore}
-The Java Message Service, ddj.com, July 2007 (http://www.ddj.com/java/200001958)
-Defining the ESB, ddj.com, July 2007 (http://www.ddj.com/java/201200303)
-Building a Lightweight JMS Provider, Dr. Dobbs Journal, June 2004 (http://www.ddj.com/java/184405687)

I like lightweight, easy to use, software. It's easier to install, configure, extend, and build applications with. Maybe I'm just simple minded, but lightweight usually translates to something simple, and that's often good enough. When it comes to enterprise Java software, application servers, JMS providers, and ESB servers can be difficult to get running, and get started with as a developer. Having something simple and lightweight to work with is refreshing. In fact, response from my article, Defining the ESB, was positive because it helps explain what can otherwise be a very complex topic. This is why I've begun to look at Apache Synapse (http://synapse.apache.org/).

Apache Synapse is a lightweight ESB with an asynchronous core that's simple to configure, performs well, and is still very useful. It has support for HTTP, SOAP, SMTP, JMS, FTP and file system transports, as well as WS-Addressing, Web Services Security (WSS), Web Services Reliable Messaging (WSRM), and efficient binary attachments (MTOM/XOP). Synapse supports message transformation using Java, XSLT, or XPath and XQuery. 

You can easily extend Synapse in Java, or dynamic scripting languages such as JavaScript, Ruby, and Groovy. Synapse supports non-blocking HTTP and HTTPS, JMS v1.0 and higher, SOAP, XML/REST, FTP, SFTP, File, Webdav, CIFS, and POP3/IMAP/SMTP transports. 

The latest release of Synapse is 1.1.1. Its key features are:
Proxy services - facilitating transport, interface (WSDL/Schema/Policy), message format (SOAP 1.1/1.2, POX/REST, Text, Binary), QoS (WS-Security/RM) and optimization switching (MTOM/SwA)
Non-blocking http/s transports based on Apache HttpCore for fast execution and support for thousands of connections
Built in Registry/Repository, facilitating dynamic updating and reloading of the configuration and associated resources (e.g. XSLTs, XSD, JS, ..)
Easily extended via custom Java class (mediator and command)/Spring mediators, or BSF Scripting languages (Javascript, Ruby, Groovy etc)
Built in support for scheduling tasks using the Quartz scheduler
Load-balancing/Fail-over, and clustered Throttling and Caching support
WS-Security, WS-Reliable Messaging & Throttling configurable via WS-Policies
JMS (v1.x upwards) message support for binary, plain text and XML and SOAP payloads
Enhanced support for Apache VFS transports (s/ftp, file, zip/tar/gz, webdav, cifs..)
Support for message splitting & aggregation using the EIP
Database lookup & store support with DBMediators
Enhanced Mail transport with POP3/SMTP/IMAP protocols
Ability to pin a proxy service or a task to server instances on a cluster
Lightweight, XML and Web services centric messaging model
Configurations serialized into a file system for versioning/backup & restoration with built-in Registry support
Support for Error handling and timeouts, recovery with http/s aintainance mode & gracefull shutdown
JMX monitoring support
Many samples and a built-in Axis2 server to try out and experiment with samples (Samples includes WS-Security, JMS POX/Text messages, Script mediation and many more samples which can be run out of the box)
Enhanced documentation

Stay tuned to my blog for more on Synapse as I develop some interesting, useful, sample ESB applications with it.

-EJB

Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 


Video