VM Connector in Mule with Example
- The Virtual Machine (VM) connector handles intra-app and inter-app communication through asynchronous queues that can be transient or persistent.
- Transient queues are faster than persistent queues, but they are not reliable in the case of a system crash.
- Persistent queues are slower but reliable.
- When running on a single instance, persistent queues work by serializing and storing the contents on the disk.
When to Use the VM Connector :
- When you want to pass messages from one flow to another through a queuing mechanism, instead of using <flow-ref /> directly.
- When you want to distribute work across a cluster.
- When you want to communicate with different apps that are running in the same Mule domain.
- When you need simple queuing that does not justify a full JMS broker.
flow of VM Connector :
VM connector configuration of test_vmFlow :
VM connector configuration of test_vmFlow1 :
Note that Queue path should be same in both VM connectors.
flow variable of first flow can not be accessed in second flow because of transport barrier.
URL : http://localhost:8085/api/vm
Method : GET
Output :
XML project code :
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:vm="http://www.mulesoft.org/schema/mule/vm" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/vm http://www.mulesoft.org/schema/mule/vm/current/mule-vm.xsd">
<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8085" basePath="/api" doc:name="HTTP Listener Configuration"/>
<flow name="test_vmFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/vm" doc:name="HTTP"/>
<set-variable variableName="testvar" value="welcome to vm" doc:name="Variable"/>
<vm:outbound-endpoint exchange-pattern="request-response" path="testqueue" doc:name="VM"/>
<logger message="VM flow ends........" level="INFO" doc:name="Logger"/>
</flow>
<flow name="test_vmFlow1">
<vm:inbound-endpoint exchange-pattern="request-response" path="testqueue" doc:name="VM"/>
<logger message="testvar value : #[flowVars.testvar]" level="INFO" doc:name="Logger"/>
</flow>
</mule>
No comments:
Post a Comment