One of the most popular enterprise service bus (ESB), Mule has the features of being Java-based, light-weight, and it functions as the runtime engine of a complete hybrid enterprise integration platform for SOA, SaaS and APIs called the Anypoint platform.
|Mulesoft Tutorial - Table of Content|
Mule is a lightweight enterprise service bus, which is an integration framework provided by MuleSoft. This is a complete JAVA based platform but it can connect to any other platform and APIs such as Facebook, Twitter, LinkedIn, and many more applications.
MuleSoft allows developers to connect and interact with any application regardless of whatever language is used to build that application in a very flexible manner.
It builds an active communication channel between the integrated application to send and exchange data over a reliable and secure platform.
The information is targeting the developer who wants to build and integrate APIs, Databases, and other applications into an advanced ecosystem.
A developer working on ESB and the enterprise looking to migrate their already existing application to the Mule environment will be the main focused audience of this tutorial.
Along with these two, this tutorial is beneficial for students and researchers who have an interest in technology.
|Do you want to get certified and build your career in Mulesoft? Then enrol in "Mulesoft Online Training" this course will help you to achieve excellence in this domain.|
Well, this tutorial is designed to help developers, students, researchers, and cloud architects to help to understand the fundamental concepts of the mule. Let’s take a quick look at the core aspects:
MuleSoft ESB (stands for Enterprise Service Bus) is a middleware tool created by MuleSoft to integrates the N number of the application over a linear bus-like infrastructure.
It is an efficiently designed infrastructure which supports uniform communication and data exchange through the various application.
This ESB enables you to connect the N number of the application over a Mule Bus and build the communication between one and another application without any interruption.
The purpose of the Mule ESB is to separate applications from each other and activate them to communicate in a highly scalable and speedy network Bus.
It’s full proof controllable network system that also minimizes the risk of data loss. ESB can be implemented using the Adaptor and the BUS as below.
Mule uses messaging servers like JMS and AMQP which allows the implementation of BUS connectivity by separating the application from each other. The Bus implementation is only can be achieved through Mule Servers.
Adaptors are responsible to act similar to a telephone network which allows you to communicate from one person to another. Similarly, the adaptor allows you to build a communication network to exchange data between the applications.
ESB Bus allows consistent passage of data and information from one application to another. This way Mule achieves a great level of application communication over a single platform.
Rather than using multiple different applications and APIs over the different networks to manage your application, Mule offers cloud-based application interaction and communication networks to support application interactions.
Adaptors are not single-end operation controller, rather it also controls security, network errors, monitoring, and message routing activities.
The guiding principles of ESB are also called as Core Principle of Mule in general.
ESB has a vast integration architecture, which allows us to integrate and operate N number of applications through a single platform. Let’s see some of the important areas where you can use ESB features.
[Related blog: Differences between Dell Boomi and MuleSoft]
For a middle or higher level application the number of integrations increases rapidly with the requirement to provide services, web hosting, messaging, database manipulation, storage, and so many other related concerns.
With the P2P integration technique, you can build the architecture to support the application but at the same time, the architecture will become complex when the number of applications increases.
Also, P2P has allotted restrictions over platform compatibility and language support. Let take an example to understand this.
The restriction of connectivity to a different platform and the complexity with multiple application integration creates the need of using Mule ESB.
Mule ESB provides word-class flexibility to integrate without having concerns about language support and compatibility issues with different application architectures.
It enhances the reusable capability of the application by encapsulating functionalities together in a single platform. Applications can be easily integrated into a synchronized manner as shown in the below image.
All the services exposed to Mule ESB are stored, registered, and published from the service registry. It’s a repository that allows you to consume and access services and application capabilities as per your requirement.
It is a transparent administration unit where all the access and capability of application through services get controlled and monitored as a centralized unit of services.
Validate (V): Schema validation is handled by Validate. ESB usage a validation parser and updated schema to validate the schema outlines. For example, you can check the XML document confirming a schema.
<?xml version="1.0" encoding="UTF-8"?> <note> <to>Jony</to> <from>America</from> <heading> Caller Reminder </heading> <body>Lets learn Mule this weekend! </body> </note>
Enrich (E): The purpose of enriching is to add additional data to a message. It simply adds more meaning to the destination user.
Transform (T): The process of converting data into a sequential format that is easily accessible to the requesting application is called transformation.
For example, when you travel abroad you require to exchange your currency into the destination country currency which makes the currency easily movable into that country.
Similarly, data also requires being transformed into a specific format for the acceptance of the requesting application.
Routing (R): You can call it an endpoint or gatekeeper of the service which provides a route to the services to commute between the source and destination.
Operate (O): The word operates itself defines the functionality performed by the component. It either invokes required services or communicates with the targeted application for the service processing.
[Related blog: MuleSoft Introduction]
As discussed earlier in the introduction Mule ESB is a lightweight Enterprise Service Bus that allows interaction between the application over a single platform.
Mule is a widely used cloud service provided by MuleSoft Org to serve the corporate and individual developer who is serving the clients with a wide range of software applications.
Mule ESB gives you the flexibility to create a communication channel between various applications that are critical for the service operation.
It also simplifies the need for huge hardware configuration to support such a large scale application by simplify integrating to the cloud-based platform.
MuleSoft is a SaaS-based platform that minimizes the use of large scale hardware setup and reduces hardware installation costs as well. You can get the below editions of MuleSoft as per your need.
A high level of scalability is also the most eye-catching advantage of the MuleSoft platform where you can buy community addition and later scale as enterprise addition as per your need.
Mule ESB offers a wide range of application support features such as
MuleSoft follows three-layer architecture for application integration and data processing. Application Layer, Integration Layer, and Transport Layer. The architecture can be seen in the below diagram.
Mule Development can be configured and customized in three categories of tasks.
Service Component Development
This task involves encouraging the reusability of the POJOs and spring beans. Developers who have the spring development knowledge can easily understand the POJO and Spring Beans usabilities.
POJO is a spring generated class which allows the use of getting and set methods along with cloud connectors. Spring beans contain business logic for application development and message enrichment.
It performs as a service mediation which allows integration of configuring the message processors, Adaptors, and router with transformers and filters.
The integration of various applications is crucial for large scale application development process. It gives great flexibility to connect over many differently build applications regardless of protocols used by them.
Using the transport method simply allows the messages to travel from one end to another in the source and destination channel. It builds a high level of communication association between the applications to transmit messages within the environment.
You can use any available transport method or you can customize the transport method as per your needs.
Mule configuration consists of below components
Mule message is the data that passes through Mule flaws and wrapped under mule object. Mule message consists of below components
Like any normal header, the Mule header holds the metadata of the information. It holds below two properties.
Inbound is the property that represents the directly sent messages by the source application. The value and structure of the message cannot be changed or modified as per the user's needs.
It's consistent throughout the journey from source to destination. Technically it is an immutable message which cannot be changed at any phase of processing.
These are the messages which contain the metadata similar to the inbound message but can be changes and mutable during the flow. It can be either set by Mule or can be modified by the users of the application.
If the message passage through an inbound source endpoint then it becomes immutable. The message passage as outbound flow from one end to the inbound flow to the other end, when it becomes immutable.
Users cannot change or modify the context of the message. The message gets transmitted through the transport method.
The payload is a message carrying an object which holds the actual message of the business.
Variables are the user-defined metadata about the messages. Variables are the temporary representation of the information kept by the messages.
Variable is not required to be passed with the message into the message flow to the destination. ESB variables are defined into three different categories.
So, now you are ready with the basic fundamental knowledge about what, where, and how Mule operates let's checkout the basic configuration to know, How to run Mule in your system?
Let’s get started by understanding the system and application configuration required to run a Mule code.
First, you need to verify that your system has JAVA JDK installed in it. You can download JDK 8.1.0 to support the Mule configuration.
Mule support a wide range of operating system check the below list to know that your system contains any of them.
Once you are ready with the Mule let’s check the Database required for running the Mule application.
Mule runs its standalone server so you do not require any additional database application support for this.
But if you required to process data, or access data store in Mule you require the below server to be configured. It will allow you to use the application server.
You can download Mule from its official Website at https://www.mulesoft.com/lp/dl/mule-esb-enterprise
Download Mule 4 Zip file into your local system by providing the above information.
Unzip the downloaded file and run the Mule 4 binary exe. Set the environment variable as Mule_Home and create a Mule directory under the folder where you have extracted the downloaded file.
Let’s take an example of a windows environment and see how you can set the environment variable.
You can set the variable in windows, Linux/Unix environment for version 4.1.5
Windows Environment Variable Example
Linux/Unix Environment Variable Example
$ export MULE_HOME=~/Downloads/mule-enterprise-standalone-4.1.5/
Once the environment variable is set now, you are ready to RUN the command to check whether Mule is working fine or generating an error in your system.
Windows Command for Mule Testing
Linux/Unix for Mule Testing
Using the above command you will be able to RUN the Mule into the foreground Mode. Once this command is activated you cannot run any other command in the terminal. If you want to stop the running command use the key ctrl-c.
The process to start Mule services
There are two ways to start Mule services. Either you can start as windows services or you can choose to start as Linux/Unix demon services.
Let’s start with windows services:
Follow the below-given steps to start windows services.
Install windows services by using this command
$ $MULE_HOMEbinmule.bat install
Run windows services using the below command
$ $MULE_HOMEbinmule.bat start
Let’s take another example to start Linux/Unix Demon services using Mule
Install Linux/Unix services by using this command
$ $MULE_HOME/bin/mule install
Once installed you can run the Linux/Unix services by below command
$ $MULE_HOME/bin/mule start
Example of starting Mule as demon services
$ $MULE_HOME/bin/mule start
MULE_HOME is set to ~/Downloads/mule-enterprise-standalone-4.1.5 MULE_BASE is set to ~/Downloads/mule-enterprise-standalone-4.1.5
Starting Mule Enterprise Edition...
Waiting for Mule Enterprise Edition.
How you can deploy Mule Apps
Follow the steps to deploy the first Mule App
Setup and start you, Mule.
Once Mule is started, you can deploy Mule app by moving the JAR package file to Apps directory in $Mule_Home
Stopping Mule services
There is two way using which you can stop or remove the running Mule from your terminal.
You can use the remove command to remove the running Mule services from the terminal.
$ $MULE_HOME/bin/mule remove
MULE_HOME is set to /Applications/mule-enterprise-standalone-4.1.5
MULE_BASE is set to /Applications/mule-enterprise-standalone-4.1.5
Detected Mac OSX:
Mule Enterprise Edition is not running.
Removing Mule Enterprise Edition daemon...
Run the STOP command to stop the Mule App. Below is an example of stopping mule in Linux/Unix demon services.
$ $MULE_HOME/bin/mule stop
MULE_HOME is set to /Applications/mule-enterprise-standalone-4.1.5
MULE_BASE is set to /Applications/mule-enterprise-standalone-4.1.5
Stopping Mule Enterprise Edition...
Stopped Mule Enterprise Edition.
Mule Anypoint Studio is an IDE (Integration Development environment) created for testing and designing of the Mule Applications. It’s a user-friendly Eclipse Based IDE.
Mule Anypoint studio is an eclipse based IDE to manage application development and flow.
Process of Downloading Mule AnyPoint studio
First, you need to have JDK accessibility in your system to support it. Verify and match that you have the correct supported version of JAVA JDK in your system.
Every operating system has its process to download and install new applications and services. Let's check how you can install Anypoint studio in your windows system.
Anypoint Studio Windows downloading process
Click on the link https://www.mulesoft.com/Ip/dl/studio to download windows Anypoint studio and choose windows compatible setup to download.
Extract the download bundle into the root folder of your system ‘c:’.
Open the setup file
Click ok to accept the default workspace or customize as per your need. The welcome message will flash on the screen once it’s installed properly.
Click on Get Started button and here you are ready to go with Anypoint studio.
Mule Anypoint studio helps in enhancing the productivity of your application while building mule applications. There is a variety of features available to support Mule development by Anypoint Studio.
Let’s see some of the key features of Anypoint Studio.
You can integrate with an exchange for importing templates, examples, definitions, and other resources from an organization which is having access to Anypoint studio services.
MuleSoft is one of the most widely used application integration platforms which simplify integration complexities. It allows you to do an N number of experiments with your applications.
You can either build on the Mule platform or you can easily migrate using the vast compatibility features of Mule. It’s easier to manage the large number of the application using the single platform.
It provides flexibility to integrate, build, deploy, and communicate with errorless processing capabilities. MuleSoft also has a high level of security features which makes the transition of information secure and efficient over the Mule environment.
Transport methods of mule make it easier to pass the messages into different flows as per the user's need. You can control, monitor, and administer data security in a centralized setup.
It is a lightweight purely java based application infrastructure that reduces the cost of on-premises hardware installation need by switching you to cloud-based SaaS product. You get n number or SaaS product benefits and cloud reliability at the same point.
You can either customize the mule into in premises cloud or you can use it on the global cloud. It empowers developers, and enterprise owners to develop and deploy large scale applications in a user-friendly environment.
It’s designed to provide just plug and play support to the developer, researchers, enterprise owner, and students. Subscriptions and migration to Mule simplified to reduce the extra setup related issues.
Anji Velagana is working as a Digital Marketing Analyst and Content Contributor for Mindmajix. He writes about various platforms like Servicenow, Business analysis, Performance testing, Mulesoft, Oracle Exadata, Azure, and few other courses. Contact him via firstname.lastname@example.org and LinkedIn.