| [[CorrelationIdentifier-CorrelationIdentifier]] |
| = Correlation Identifier |
| |
| Camel supports the |
| http://www.enterpriseintegrationpatterns.com/CorrelationIdentifier.html[Correlation |
| Identifier] from the xref:enterprise-integration-patterns.adoc[EIP |
| patterns] by getting or setting a header on a |
| xref:message.adoc[Message]. |
| |
| When working with the xref:components::activemq-component.adoc[ActiveMQ] or xref:components::jms-component.adoc[JMS] |
| components the correlation identifier header is called |
| *JMSCorrelationID*. You can add your own correlation identifier to any |
| message exchange to help correlate messages together to a single |
| conversation (or business process). |
| |
| image::eip/CorrelationIdentifierSolution.gif[image] |
| |
| The use of a Correlation Identifier is key to working with the |
| xref:bam.adoc[Camel Business Activity Monitoring Framework] and can also |
| be highly useful when testing with simulation or canned data such as |
| with the xref:components::mock-component.adoc[Mock testing framework] |
| |
| Some xref:enterprise-integration-patterns.adoc[EIP] patterns will spin off a sub message, and in |
| those cases, Camel will add a correlation id on the |
| xref:exchange.adoc[Exchange] as a property with they key |
| `Exchange.CORRELATION_ID`, which links back to the source |
| xref:exchange.adoc[Exchange]. For example the |
| xref:split-eip.adoc[Splitter], xref:multicast-eip.adoc[Multicast], |
| xref:recipientList-eip.adoc[Recipient List], and xref:wireTap-eip.adoc[Wire |
| Tap] EIP does this. |
| |
| The following example demonstrates using the Camel JMSMessageID as the |
| Correlation Identifier within a request/reply pattern in |
| the xref:components::jms-component.adoc[JMS] component |
| |
| == Samples |
| |
| [source,java] |
| ---- |
| from("direct:start") |
| .to(ExchangePattern.InOut, "jms:queue:foo?useMessageIDAsCorrelationID=true") |
| .to("mock:result"); |
| ---- |
| |
| And with XML: |
| |
| [source,xml] |
| ------------------------------------------------------------------------------ |
| <route> |
| <from uri="direct:start"/> |
| <to pattern="InOut" uri="jms:queue:foo?useMessageIDAsCorrelationID=true"/> |
| <to uri="mock:result"/> |
| </route> |
| ------------------------------------------------------------------------------ |
| |