This page last changed on May 31, 2006 by tcarlson.

Mule is a messaging platform based on ideas from ESB architectures. The core of Mule is a SEDA-based service container that manages service objects, known as Universal Message Objects or UMOs, which are plain old java objects. All communication between UMOs and other applications is made through message endpoints. These endpoints provide a simple and consistent interface to vastly disparate technologies such as Jms, Smtp, Jdbc, Tcp, Http, Xmpp, file, etc.

Mule applications usually consist of many Mule instances across the network. Each instance is a light-weight container that hosts one or more UMO component. Each UMO component will have one or more endpoints that it will send and receive events through.

 Cannot resolve external resource into attachment.
 

The container provides a range of services for UMO components such as transaction management, transformation of events, routing, event correlation, logging, auditing and management. Mule separates object construction from management meaning that popular IoC/DI containers such as Spring, PicoContainer or Plexus can be used to construct your UMO components.

What Mule is not

People often ask: "is Mule a Jms implementation?". Mule is not a Jms server, but can be configured to use pretty much any Jms server. There are so many good Jms implementations out there that there was no point adding to the list. The Mule philosophy is not to implement any transports directly if there is already a stable and widely-accepted implementation available. For example, Mule reuses the Axis and GLUE soap stacks rather than reimplementing a new one. Mule offers a consistent set of services for managing event flows, correlation, transactions, security and auditing for any type of connectivity.

The Basics

Before using Mule it's good to understand some of the core concepts and terminology that is used throughout the rest of the documentation. The diagram below shows a simplified breakdown of the Mule Server components.

 Cannot resolve external resource into attachment.
 

The Mule Manager

The Mule Manager is central to a Mule server instance (also known as a Node or Mule Node). Its primary role is to manage the various objects such as connectors, endpoints and transformers for a Mule instance. These objects are then used to control message flow to and from your services/components and provide services to the Model and the components it manages.

The Model

The model is the container in which your components are managed and executed. It controls message flow to and from your components, manages threading, lifecycle and pooling. The default MuleModel is SEDA-based meaning it uses an efficient event-based queuing model to maximize performance and throughput.

UMO Components

UMO stands for Universal Message Object; an object that can receive and send events from anywhere. UMO Components are your business objects. These are components that execute business logic on an incoming event. These components are standard JavaBeans, there is no Mule-specific code in your components. Mule handles all routing and transformation of events to and from your objects based on the configuration of your component

Endpoints

Endpoints are fundamental to Mule's communication capabilities. An Endpoint defines communication channel between two or more components, applications or repositories. They provide a powerful way of allowing your objects to talk over any protocol in a unified way. An endpoint can be configured with message filters, security interceptors and transaction information to control who, what and how messages are received or sent via the endpoint. For more information see Mule Endpoints.

External Applications

External applications can be anything from application servers to legacy payroll systems, to mainframe trading applications or a client application. Basically, any application that has a way of serving or consuming data. As Mule performs all communication via endpoints, UMO components have no notion of what application produced the data, where the application is located nor the transport protocol used.

Enough Chat!

Ok. Let's look at the goods.
Mule comes with a number of sample applications that are well documented and should serve as an introductory reference. The best to start with is the Echo Example. That provides a simple step-by-step walkthrough of setting up a component and exposing it over different transports.

A list of all Sample applications can be found here here.

Getting Started

Once you have read this and had a look at the sample applications you'll want to dive in and give Mule a go yourself. There is quite a lot to the Mule framework, but don't let that intimidate you The core concepts are explained in this introduction and everything else can be picked up along the way.
Take a look at the Getting Started Guide page for information about downloading and installing Mule.


If you have any feedback or questions you can post on the mailing list. Have fun!

Document generated by Confluence on Oct 03, 2006 09:23