How does the Camel API compare to from CXF, HTTP, JBI, JMS, JavaMail, etc.
We have tried to make the Camel Exchange and Message map very closely to JBI in particular but also CXF, HTTP, JMS, Mail, XMPP and most other integration abstractions. We want to prevent leaky abstractions, so the Camel API exposes the underlying APIs so that a Processor can make use of the underlying abstractions if they make sense.
For example:
Component | Inbound exchange exposes |
---|---|
Each Inbound CxfExchange has access to the underlying Exchange and Message from CXF |
|
Each inbound HttpExchange has access to the underlying HttpServletRequest and HttpServletResponse |
|
JBI |
Each inbound JbiExchange has access to the underlying JBI MessageExchange and NormalizedMessage objects |
Each inbound JmsExchange has access to the underlying JMS Message objects |
You can probably see a pattern forming now :smile:
For many routing and mediation components and Processor objects, you maybe don’t care about the underlying transport and can instead stick to the abstract Camel API. But if you need to, the real transport APIs are there for you.