Message headers typically contain the most useful message content from the perspective
of a router, because headers are often intended to be processed in a router service. To
access header data, you must first get the message from the exchange object (for example,
using Exchange.getIn()
), and then use the
Message
interface to retrieve the individual headers (for
example, using Message.getHeader()
).
Example 2.4 shows an example of a custom processor that
accesses the value of a header named Authorization
. This example uses the
ExchangeHelper.getMandatoryHeader()
method, which eliminates the
need to test for a null header value.
Example 2.4. Accessing an Authorization Header
import org.apache.camel.*;
import org.apache.camel.util.ExchangeHelper;
public class MyProcessor implements Processor {
public void process(Exchange exchange) {
String auth = ExchangeHelper.getMandatoryHeader(
exchange,
"Authorization",
String.class
);
// process the authorization string...
// ...
}
}
For full details of the Message
interface, see
Messages.
You can also access the message body. For example, to append a string to the end of the In message, you can use the processor shown in Example 2.5.
Example 2.5. Accessing the Message Body
import org.apache.camel.*; import org.apache.camel.util.ExchangeHelper; public class MyProcessor implements Processor { public void process(Exchange exchange) { Message in = exchange.getIn(); in.setBody(in.getBody(String.class) + " World!"); } }
You can access a message's attachments using either the
Message.getAttachment()
method or the
Message.getAttachments()
method. See Example 1.2 for more details.