Using Modules In Your Application
Mule applications themselves can provide an additional way to modularize your project.
Thanks to Mule’s capacity to run and hot-redeploy applications side-by-side in the same instance, such a coarse-grained approach to modularity is useful when keeping elements of your application running while others could go through some maintenance operations.
For optimum modularity:
Consider what services are tightly interrelated and keep them together in the same Mule application: they will form sub-systems of your whole solution.
Establish communication channels between the different Mule applications: the VM transport will not be an option here, as it can’t be used across different applications. Prefer the TCP or HTTP transports for synchronous channels and JMS for asynchronous ones.
Watch out for port conflicts: two applications cannot deploy inbound endpoints bound to the same ports.