[[HowdoesCamelcomparetoServiceMix-HowdoesCamelcomparetoServiceMix]]
= How does Camel compare to ServiceMix?

Camel is smart routing and mediation engine which implements the
xref:{eip-vc}:eips:enterprise-integration-patterns.adoc[Enterprise Integration
Patterns] and is designed to be used either inside an ESB like
ServiceMix, in a Message Broker like ActiveMQ or in a smart endpoint or
web services framework like CXF. ServiceMix is an ESB, a JBI container
and an integration platform. So they both address different needs though
they are both designed to work great together.

Camel can be deployed as a component within ServiceMix to provide
xref:{eip-vc}:eips:enterprise-integration-patterns.adoc[EIP routing and mediation]
between existing JBI components together with communicating with any of
the other Camel xref:ROOT:component.adoc[Components] along with defining new
JBI components on the NMR. So Camel is similar to the
xref:how-does-camel-compare-to-servicemix-eip.adoc[ServiceMix EIP
component].

To work with Camel and ServiceMix you take your Camel
xref:ROOT:spring.adoc[Spring] configuration and turn it into a JBI Service
Unit using the maven plugin or archetype. For more details see
http://incubator.apache.org/servicemix/servicemix-camel.html[ServiceMix
Camel plugin].

So you could start out using Camel routing inside your application via
xref:ROOT:dsl.adoc[Java] or xref:ROOT:spring.adoc[Spring]; then later on if you
choose to you could wrap up your routing and mediation rules as a JBI
deployment unit and drop it into your ServiceMix ESB. This provides a
nice agile approach to integration; start small & simple on an endpoint
then as and when you need to migrate your integration components into
your ESB for more centralised management, governance and operational
monitoring etc.

