Skip to content

Instantly share code, notes, and snippets.

@mariomartinezricston
Last active December 3, 2017 14:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mariomartinezricston/349d2aa375bee178bf3833d01c93f4f1 to your computer and use it in GitHub Desktop.
Save mariomartinezricston/349d2aa375bee178bf3833d01c93f4f1 to your computer and use it in GitHub Desktop.
Request-reply blog
<flow name="service-B-reply-listener-flow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/serviceBreply" doc:name="HTTP" />
<logger message="Data is here guys!" level="INFO" doc:name="Logger" />
<set-session-variable variableName="TransactionID" value="#[message.inboundProperties.TransactionID]" doc:name="Session Variable"/>
<vm:outbound-endpoint exchange-pattern="one-way" path="in-response" doc:name="VM in-response"/>
</flow>
<request-reply doc:name="Request-Reply">
<vm:outbound-endpoint exchange-pattern="one-way" path="store-transaction" doc:name="VM store-transaction">
<message-properties-transformer>
<delete-message-property key="MULE_REPLYTO" />
</message-properties-transformer>
</vm:outbound-endpoint>
<vm:inbound-endpoint exchange-pattern="one-way" path="reply" doc:name="VM reply" />
</request-reply>
<flow name="resume-flow">
<vm:inbound-endpoint exchange-pattern="one-way" path="in-response" doc:name="VM in-response" />
<logger level="INFO" doc:name="Logger" message="TransactionID #[sessionVars.TransactionID] says finally! I was waiting sooo long for you"/>
<objectstore:retrieve config-ref="Activation_ObjectStore" key="#[sessionVars.TransactionID]" targetProperty="WaitingCorrelationID" doc:name="ObjectStore - retrieve transaction"/>
<logger message="CorrelationID #[flowVars.WaitingCorrelationID] for TransactionID #[sessionVars.TransactionID]" level="INFO" doc:name="Logger"/>
<set-payload value="#['{&quot;Message&quot;: &quot;Your data for TransactionID ' + sessionVars.TransactionID + '&quot;}']" doc:name="Set Payload"/>
<vm:outbound-endpoint exchange-pattern="one-way" path="reply" doc:name="VM reply"/>
<objectstore:remove config-ref="Activation_ObjectStore" key="#[sessionVars.TransactionID]" doc:name="ObjectStore - detele transaction"/>
</flow>
<flow name="service-A-listener-flow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/serviceA" doc:name="HTTP" />
<set-session-variable variableName="TransactionID" value="#[message.inboundProperties.TransactionID]" doc:name="Session Variable - TransactionID" />
<set-payload value="#[&quot;Request data for TransactionID: &quot; + sessionVars.TransactionID]" doc:name="Set Payload"/>
<flow-ref name="call-to-service-B-subflow" doc:name="call-to-service-B-subflow"/>
<request-reply doc:name="Request-Reply">
<vm:outbound-endpoint exchange-pattern="one-way" path="store-transaction" doc:name="VM store-transaction">
</vm:outbound-endpoint>
<vm:inbound-endpoint exchange-pattern="one-way" path="reply" doc:name="VM reply" />
</request-reply>
<logger message="FINISHED! TransID: #[sessionVars.TransactionID] MULE_CORRELATION_ID: #[message.inboundProperties['MULE_CORRELATION_ID']]" level="INFO" doc:name="Logger" />
</flow>
<sub-flow name="call-to-service-B-subflow">
<http:request config-ref="HTTP_Request_Configuration" path="/serviceB" method="POST" doc:name="HTTP - service B call"/>
</sub-flow>
<flow name="service-B-listener-flow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/serviceB" doc:name="HTTP service B"/>
<set-payload value="#[&quot;Orden Received!&quot;]" doc:name="Set Payload"/>
</flow>
<flow name="store-transaction-flow">
<vm:inbound-endpoint exchange-pattern="one-way" path="store-transaction" doc:name="VM store-transaction" />
<logger level="INFO" doc:name="Logger" message="Saving #[sessionVars.TransactionID] CORRID: #[message.inboundProperties['MULE_CORRELATION_ID']]"/>
<objectstore:store config-ref="Activation_ObjectStore" key="#[sessionVars.TransactionID]" value-ref="#[message.inboundProperties.'MULE_CORRELATION_ID']" doc:name="ObjectStore - store transaction" overwrite="true"/>
<logger level="INFO" doc:name="Logger" message="saved #[sessionVars.TransactionID]. Let's wait for the data!"/>
</flow>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment