How does Camel compare to ServiceMix EIP

ServiceMix EIP was the ancestor though they both do similar things.

The main difference with ServiceMix EIP is its integrated into the existing ServiceMix XBean XML configuration whereas Camel has more Enterprise Integration Patterns and can be used outside of JBI (e.g. just with pure JMS or MINA). Also Camel supports a Java DSL or XML configuration.

Converting from ServiceMix EIP to Camel

Here’s an example of a servicemix-eip route:

<eip:message-filter service="test:messageFilter" endpoint="endpoint">
  <eip:target>
    <eip:exchange-target service="test:trace3" />
  </eip:target>
  <eip:filter>
    <eip:xpath-predicate xpath="count(/test:world) = 1" namespaceContext="#nsContext"/>
  </eip:filter>
</eip:message-filter>

Here’s the equivalent Camel code in XML:

<route>
  <from uri="jbi:endpoint:test:messageFilter:endpoint">
  <filter>
   <xpath>count(/test:world) = 1</xpath>
   <to uri="jbi:service:test:trace3"/>
  </filter>
</route>

Or Java:

from("jbi:endpoint:test:messageFilter:endpoint").
  filter(ns.xpath("count(/test:world) = 1")).
  to("jbi:service:test:trace3");