Mule : Overview
This page last changed on Apr 29, 2006 by rossmason.
What is Mule?Mule is a light-weight messaging framework. It is a highly distributable object broker that can seamlessly handle interactions with other applications using disparate technologies, transports and protocols. Mule was designed around the Enterprise Service Bus architecture, which stipulates that different components or applications communicate through a common messaging bus, usually implemented using Jms or some other messaging server. Key Features
But there are already frameworks out thereIt is often misconstrued that Mule aims to be a replacement for existing application frameworks, but this is not the case. In fact Mule leverages many open source projects such as Axis, Spring, ActiveMQ, Plexus and PicoContainer. Mule fills a void in enterprise java development where an application requires complex interactions with a variety of systems on a variety of platforms. Mule makes light work of wiring these systems together in a robust decoupled environment and provides the necessary support to route, transport and transform data to and from these systems. When to use MuleThe common scenario for using Mule -
Why not just use Jms?Jms is a vital tool in the enterprise toolbox, but on its own it leaves a lot of additional work for the developer in order to use it. Mule provides a simple, consistent yet fully customisable way to work with Jms or any other messaging or transport technology. Components in Mule are wired together using a variety of technologies though this is totally abstracted away from the application. How do Mule and JBI relate? JBI uses a notion of Message Exchanges and a Normalized Message to communicate between components, where as Mule uses a flexible "POJO / Endpoint" architecture that allows you to develop sophisticated message flows between services using a very simple model. JBI is a service container whereas mule is more of a ubiquitous messaging fabric that goes beyond integration to provide a solutions for translating, monitoring, routing and orchestrating all type of information around the organization and beyond in a secure, scalable environment. It's still early days for JBI and the specification makes a lot of assumptions about the data being used (read: XML) and is based on WSDL which can be woefully complex for a lot of situations where it's just not necessary. GoalsThe goals of the Mule project and Universal Message Objects have been heard before a thousand times although not necessarily delivered together (or even delivered!) -
When the Mule project started there seems to be a gap in the market for a simple and lightweight way to write components that do something to data without needing to worry about the sender or recipient of the data, the format of the data or the technology being used to send/receive the data. I emphasis simple because although many brokering and integration technologies offer ways of connecting to disparate data sources, you often have to do extra coding to get it to behave the way you want and to deliver the data where you want it to go. Mule allows you to quickly develop components and then change the way they behave through configuration instead of coding. Not Just an ESBMule has been designed to provide a simple, powerful model of wiring POJO services together using endpoints and make no assumptions about the message or interfaces being used. Mule's ultimate goal is to be the "Swiss-army knife" of integration. It is adaptive to its surrounding technology rather than prescribing it. There are no hard and fast rules on how your integration service layer should behave when using Mule; you can pull in JBI, EJB, Mainframe apps, Messaging, web services, sockets and file systems and interact with them all in simple consistent way. The ESB model is just one topology that Mule supports others include Client/Server, Enterprise Service Network and Peer to Peer, Hub and spoke and embedded. These can also be mixed and matched to model complex enterprise messaging and service requirements. For more information see Topologies. Mule FlexibilityFrom the ground up Mule has been designed to be as flexible and extensible as possible. This means that Mule can use services from other frameworks just through configuration. An example of this is the Mule container itself. With a single line of configuration Mule can be set to use Spring, Pico or its own container to obtain Mule managed components. This means that your application can make use of all the functionality of these applications as well as the additional features of Mule. Spring Framework IntegrationMule has full support for Spring and its even possible to have the whole Mule server instantiated by Spring as well as using the spring container to obtain managed objects. This ability exposes every object in Mule including the server itself to Spring's transaction management, aop and jdbc/dao framework.. Mule and Spring are a powerful combination. You can also levage Mule eventing capabilities in you Spring application by uing the Mule Event Multicaster for Spring. This plugs into the Spring Apllication Context allows your components to send and receive Mule events via the Application context. Components in MuleA component is a business or application object which is managed by Mule. Being managed by Mule means that Mule will handle all the interactions to and from the component leaving the component code only need to concern itself with application specific code, i.e. the job its supposed to do. Mule will manage the following aspects of a component -
Mule provides a host of services to enable components to send and receive events over a messaging technology without ever needing to know about the transport, delivery or format of the data, whilst handling all transaction, lifecycle and exceptions transparently. Non-intrusive approachThere is no requirement by Mule to have your business or application objects extend or implement any classes. Mule also has powerful and customisable Lifecycle support for components. This means that you can have almost any kind of object managed by Mule whether it be a POJO or a component from another framework. Where do I go to learn more?This document provides an overview of some of the aims and features of Mule. To find out more have a look at - Introduction Introduces the core concepts and the best way to get started. Mule FAQ A good place to get some of your questions answered plus get the answers to questions you havent thought of yet. User Guide Provides documentation about the various Mule components, how to use them and how to configure them. Architecture Guide Provides a reference to workings of the Mule Server describing the features of each element in the system. Mailing List Is a good place to ask any questions about using mule. |
Document generated by Confluence on Oct 03, 2006 09:23 |