第 44 章 邮件接口


摘要

本章论述了如何实现 Message 接口,这是 Apache Camel 组件的实现中的可选步骤。

44.1. 消息接口

概述

org.apache.camel.Message 类型的实例可以代表任何类型的消息(InOut)。图 44.1 “消息继承层次结构” 显示消息类型的继承层次结构。您不需要为组件实施自定义消息类型。在很多情况下,默认的实施 DefaultMessage 足够了。

图 44.1. 消息继承层次结构

消息继承层次结构

Message 接口

例 44.1 “邮件接口” 显示 org.apache.camel.Message 接口的定义。

例 44.1. 邮件接口

package org.apache.camel;

import java.util.Map;
import java.util.Set;

import javax.activation.DataHandler;

public interface Message {

    String getMessageId();
    void setMessageId(String messageId);

    Exchange getExchange();

    boolean isFault();
    void    setFault(boolean fault);

    Object getHeader(String name);
    Object getHeader(String name, Object defaultValue);
    <T> T getHeader(String name, Class<T> type);
    <T> T getHeader(String name, Object defaultValue, Class<T> type);
    Map<String, Object> getHeaders();
    void setHeader(String name, Object value);
    void setHeaders(Map<String, Object> headers);
    Object  removeHeader(String name);
    boolean removeHeaders(String pattern);
    boolean hasHeaders();

    Object getBody();
    Object getMandatoryBody() throws InvalidPayloadException;
    <T> T  getBody(Class<T> type);
    <T> T  getMandatoryBody(Class<T> type) throws InvalidPayloadException;
    void     setBody(Object body);
    <T> void setBody(Object body, Class<T> type);

    DataHandler getAttachment(String id);
    Map<String, DataHandler> getAttachments();
    Set<String> getAttachmentNames();
    void removeAttachment(String id);
    void addAttachment(String id, DataHandler content);
    void setAttachments(Map<String, DataHandler> attachments);
    boolean hasAttachments();

    Message copy();

    void copyFrom(Message message);

    String createExchangeId();
}

消息方法

Message 接口定义以下方法:

  • setMessageId (), getMessageId () HEKETI-wagonGetter 和 setter 方法用于消息 ID。您在自定义组件中使用消息 ID 是否是实施详情。
  • getExchange () HEKETI-wagonReturns 对父交换对象的引用。
  • isFault (), setFault () HEKETI-wagonGetter 和 setter 方法用于 fault 标记,这表明此消息是否为 fault 消息。
  • getHeader (), getHeaders () , setHeader (), setHeaders (), removeHeader (), hasHeaders () and setter 方法用于消息标头。通常,这些消息标头可用于存储实际标头数据,或者存储各种元数据。
  • getBody (), getMandatoryBody (), setBody () wagon-wagonGetter 和 setter 方法用于消息正文。getMandatoryBody ()访问程序保证返回的正文不是null,否则会抛出 InvalidPayloadException 异常。
  • getattachment (), getAttachments (), getAttachmentNames (), removeAttachment (), addAttachment (), setAttachments (), hasAttachments ()
  • copy () HEKETICreates 是一个当前自定义消息对象相同的新副本(包括消息 ID)副本。
  • 将指定通用消息对象 message 消息 的完整内容(包括消息 ID)复制到当前消息实例中。由于此方法必须能够从任何消息类型复制,因此它会复制通用消息属性,但不能复制自定义属性。
  • 如果消息实施能够提供 ID,否则返回 null,则 createExchangeId () swig-wagonReturns 是此交换的唯一 ID。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.