Calling flow from another project in Mule - mule

I like to call a flow from another project in Mule. Is that possible.
If its so please provide me the details how it can be achieved?
Thanks in advance.

If they are separate projects(even on the same JVM) then you cannot use flow-ref but will have to use a transport such as JMS, HTTP etc. If you are using Mule 3.5 Enterprise Edition then you can use the VM transport to communicate between projects using the new shared resources and domain functionality. More info on that here: http://www.mulesoft.org/documentation/display/current/Shared+Resources

Related

Queue Options in Mule Cloudhub

I wanted to use queueing in my Mule applications deployed on cloudhub.
what are the options available?
As per my learning I think if we add VM component then we will be able to see the queue in cloudhub persistence queue option.
I have seen Anypoint MQ connectors as well..
are these two options are same?
If not, then which one is better?
Any other options??
VM queues are very basic point-to-point queues. You won't be able to browse the queue, access it through apis, use publish-subcribe, app to app, org to org and others.
For any non basic point-to-point use case, consider Anypoint MQ. Otherwise, any other cloud messaging solution could be used too if it has the appropriate connector.
use anypoint MQ, its easier to config with client. i suggest anypoint MQ becuz of pub/sub msgs

HL7 messaging using Mule ESB Community

Mule Healthcare Toolkit is a collection of features that facilitates integration with healthcare systems by providing the tools needed to easily create, read and transform HL7 version v2.x messages within Mule... Unfortunately, it is available only for Mule ESB Enterprise!!!
Is there a way to implement a complete messaging service based on HL7 using the Community version of Mule?
Best regards, Vi.
Apache Camel has HL7 components that you can use to create HL7 routes. You could possibly then route this to mule via a web service call or a JMS call being hosted by the Mule ESB for example.
Apache camel does not require a full ESB (it is not a ESB) so it could act as some sort of translator proxy.
Might not be your cup of tea though.
I realize this is an old thread, but it appears that the Mule Healthcare Toolkit uses the open source HAPI library for (at least some of) the HL7 v2 message support. You'd have examine it more closely, but I suspect one could create their own Mule components using HAPI.
http://hl7api.sourceforge.net/

Mule Inter - App communication in same instance

I have explored the web on MULE and got to understand that for Apps to communicate among themselves - even if they are deployed in the same Mule instance - they will have to use either TCP, HTTP or JMS transports.
VM isn't supported.
However I find this a bit contradictory to ESB principles. We should ideally be able to define EndPoints in and ESB and connect to that using any Transport? I may be wrong.
Also since all the apps are sharing the same JVM one would expect to be able to communicate via the in-memory VM queue rather than relying on a transactionless HTTP protocol, or TCP where number of connections one can make is dependent on server resources. Even for JMS we need to define and manage another queue and for heavy usage that may have impact on performances. Though I agree if we have distributed and clustered systems may be HTTP or JMS will be only options.
Is there any plan to incorporate VM as a inter-app communication protocol or is there any other way one Flow can communicate with another Flow Endpoint but in different app?
EDIT : - Answer from Mulesoft
http://forum.mulesoft.org/mulesoft/topics/concept_of_endpoint_and_inter_app_communication
Yes, we are thinking about inter-app communication for a future release.
Still is not clear when we are going to do it but we have a couple of ideas on how we want this feature to behave. We may create a server level configuration in which you can define resources to use in all your apps. There you would be able to define a VM connector and use it to send messages between apps in the same server.
As I said, this is just an idea.
Regarding the usage of VM as inter-app communication, only MuleSoft can answer if VM will have a future feature or not.
I don't think it's contradictory to the ESB principle. The "container" feature is pretty well defined in David A Chappell's "Enterprise Service Bus book" chapter 6. The container should try it's best to keep the applications isolated.
This will provide some benefits like "independently deployable integration services" (same chapter), easier clusterization, and other goodies.
You should approach same VM inter-app communications as if they where between apps placed in different servers.
Seems that Mule added in 3.5 version, a feature to enable communication between apps deployed in the same server. But sharing a VM connector is only available in the Enterprise edition.
Info:
http://www.mulesoft.org/documentation/display/current/Shared+Resources#SharedResources-DefiningDomains
Example:
http://blogs.mulesoft.org/optimize-resource-utilization-mule-shared-resources/

Mule ESB integration with web applications

We have more than 5 corporate applications running on different servers with technologies like spring, struts communication between these application is point to point. We are planning to migrate this to ESB using Mule.
I didnt quite understand how mule works i have few doubts,
Mule is running in a different server do i need to deploy all my 5 aplications into the mule server.
I have spring application delployed on a tomcat server how this application is going to receive messages through mule or what are the configuration changes i need to do in my server or mule server.
Any advice or tutorials.
You need not deploy all you 5 applications in the Mule Server.
You said that all your application are currently point to point (which means that all are talking/communicating now through http protocol), similarly you can also use mule's http endpoints to communicate with all the 5 applications.
I.e. the spring application talking to another spring application can be modified to Spring application talking to Mule and Mule in turn talking to another Spring application .
You must learn the basics from the Documentation
http://www.mulesoft.org/documentation/display/current/Mule+Fundamentals --> browse through the navigation on the lefthand side.
Mule is an integration tool. you no need to change any of your existing applications. All you need is to develop an mule application which can do the mediation/orchestration.
For connecting with your spring application you no need to change any configuration you need to use http:outbound connector inside your mule flow
Just go through http://www.mulesoft.org/documentation/display/current/HTTP+Transport+Reference
So mule is based on SOA principle, so your 5 corporate service need not to be their in a single system. so if you want to consume the service/functionality of any of your 5 application, expose those service as web service, cloud be soap or rest. And you can call those service inside your mule. so in this case you have to create only 5 connection and where ever required you can refer to those connection inside mule configuration file.
#saravanan shanmugavel you need to use Mule ESB to orchestrate the communication between these application...ESB came into the picture to remove your point to point communication...you can create a proxy service for each of your service and one flow which will orchestrate communication between all...
All you need to do is change the application that is configurable according to mule server.
Please refer below link that will be helpful for understanding of mule that helps you better orchestrate communication between all.
https://docs.mulesoft.com/

What is a VM transport in the context of an ESB?

I'm reading the Mule ESB documentation, and there is a lot of references to VM Queues. Is this some sort of JMS implementation? What is meant by it, and where can I find more info?
Thanks in advance,
It is a Mule specific transport for messaging within the same VM (i.e. the mule standalone server or the tomcat instance mule has been deployed to). The transport can implement queuing with in-memory or on-disk storage, but there aren't any reliability guarantees.
See here:
http://www.mulesoft.org/documentation/display/MULE2USER/VM+Transport
http://mulesux.tumblr.com/post/3102264921/murphys-law-or-dropping-the-ball
I've never worked with Mule, but I read some docs a few years ago.
I believe VM queues would reside in memory within the JVM. I think it's a way to use SOA constructs between Java Beans, so that local POJO methods can be treated as services. That way, if you some day want to replace that POJO with an external service or host it elsewhere, you only have to change the configuration of that service.
This is all conjecture from the small amount of Mule I recall, so definitely verify, verify, verify. :-)