35.3. 访问消息内容

访问消息标头

从路由器的角度来看,消息标头通常包含最有用的消息内容,因为标头通常希望在路由器服务中进行处理。要访问标头数据,您必须首先从交换对象获取消息(例如,使用 Exchange.getIn ()),然后使用 Message 接口来检索单个标头(例如,使用 Message.getHeader ())。

例 35.4 “访问授权标头” 显示了访问名为 Authorization 的标头值的自定义处理器示例。本例使用 ExchangeHelper.getMandatoryHeader () 方法,它消除了对 null 标头值进行测试的需要。

例 35.4. 访问授权标头

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...
    // ...
  }
}

有关 Message 接口的详情,请参考 第 34.2 节 “消息”

访问消息正文

您还可以访问消息正文。例如:要将字符串附加到 In 信息的末尾,您可以使用 例 35.5 “访问消息正文” 中显示的处理器。

例 35.5. 访问消息正文

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!");
    }
}

访问消息附加

您可以使用 Message.getAttachment () 方法或 Message.getAttachments () 方法访问消息的附件。详情请查看 例 34.2 “消息接口”