第44章 Message インターフェース


概要

本章では、Apache Camel コンポーネントの実装で任意のステップである Message インターフェースを実装する方法を説明します。

44.1. Message インターフェース

概要

org.apache.camel.Message タイプのインスタンスは、あらゆる種類のメッセージ(In または Out)を表すことができます。図44.1「メッセージの継承階層」 メッセージタイプの継承階層を に示します。コンポーネントにカスタムメッセージタイプを常に実装する必要はありません。多くの場合、デフォルトの実装 DefaultMessage は十分です。

図44.1 メッセージの継承階層

メッセージの継承階層

Message インターフェース

例44.1「Message インターフェース」 は、org.apache.camel.Message インターフェースの定義を示しています。

例44.1 Message インターフェース

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 インターフェースは以下のメソッドを定義します。

  • メッセージ ID の setMessage Id( )、getMessageId() メソッド、getMessageId()メソッド、および setter メソッド。カスタムコンポーネントでメッセージ ID を使用する必要があるかどうかが実装の詳細となります。
  • getExchange() MYBACKUPDIR-ListenerExternalReturns は親エクスチェンジオブジェクトへの参照を作成します。
  • fault フラグの is Fault( ), setFault() aadClient-\":\"Getter メソッド、および setter メソッドは、このメッセージがフォールトメッセージであるかどうかを示します。
  • getHeader()getHeaders()setHeader()setHeaders()removeHeader()hasHeaders(): メッセージヘッダーのゲッターメソッドとセッターメソッド。通常、これらのメッセージヘッダーを使用して実際のヘッダーデータを保存するか、その他のメタデータを保存することもできます。
  • getBody()getMandatoryBody()setBody(): メッセージボディーのゲッターメソッドとセッターメソッド。getMandatoryBody()アクセサーは、返されるボディーが null でないことを保証します。それ以外の場合は、InvalidPayloadException 例外が発生します。
  • getAttachment()getAttachments()getAttachmentNames()removeAttachment()addAttachment()setAttachments()hasAttachments(): 添付ファイルを取得、設定、追加、および削除するメソッド。
  • copy(): 現在のカスタムメッセージオブジェクトと同一の (メッセージ ID を含む) 新しいコピーを作成します。
  • copyFrom(): 指定した汎用メッセージオブジェクト message の完全なコンテンツ (メッセージ ID を含む) を現在のメッセージインスタンスにコピーします。このメソッドは どのような メッセージタイプからでもコピーできる必要があるため、汎用メッセージプロパティーがコピーされますが、カスタムプロパティーはコピーされません。
  • メッセージの実装が ID を提供できる場合、createExchangeId() は、このエクスチェンジの一意の ID を取り消します。それ以外の場合は、null を返します。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.