57.2.5. 5.メッセージ
Message アノテーションは、キーと値のペアフィールドが含まれるモデルのクラスを特定するために使用されます。このような形式は、主に Financial Exchange Protocol Messages (FIX)で使用されます。ただし、このアノテーションは、データがキーで識別される他の形式に使用できます。キーペアの値は、区切り文字で区切られており、タブデリミッター(ユニコード表現: \u0009)などの特殊文字や見出しの開始(ユニコード表現: \u0001)のようになります。
FIX メッセージを使用するには、モデルに、Order クラスである root メッセージクラスにリンクされた Header クラスと Trailer クラスが含まれている必要があります。これは必須ではありませんが、QuickFix プロジェクトに基づく Fix ゲートウェイである camel-fix と組み合わせて camel-bindy を使用する場合に便利です。
| アノテーション名 | レコードの種類 | レベル |
|---|---|---|
| メッセージ | キーと値のペア。 | クラス |
| パラメーター名 | タイプ | 必須/任意 | デフォルト値 | Info |
|---|---|---|---|---|
| keyValuePairSeparator | 文字列 | ✓ | キーと値のペアの区切り文字は、値をキーから分離するために使用されます(必須)。'\u0001'、'\u0009'、'#'、または 'anything' を指定できます。 | |
| pairSeparator | 文字列 | ✓ | トークンでキーと値のペアを分割するために使用されるペアセパレーター(必須)。'=', ';' または 'anything' にすることができます。 | |
| crlf | 文字列 | WINDOWS | 各レコードの後にキャリッジリターンを追加するために使用される文字(オプション)。使用できる値は = WINDOWS、UNIX、MAC、または custom です。事前に一覧表示されている 3 つの値以外の値を指定すると、入力した値(カスタム)が CRLF 文字として使用されます。 | |
| isOrdered | boolean | false | メッセージの出力で順序付けする必要があるかどうかを示します。このアノテーションはモデルのメッセージクラスに関連付けられており、一度宣言する必要があります。 | |
| name | 文字列 | メッセージを説明する名前 (オプション) | ||
| type | 文字列 | FIX | type は、メッセージのタイプを定義するために使用されます(例:FIX、EMX、…)。(オプション) | |
| version | 文字列 | 4.1 | version は、メッセージのバージョンを定義します(例:4.1、…)。(オプション) |
ケース 1 : separator = 'u0001'
FIX メッセージのキーと値のペアフィールドを分離するために使用されるセパレーターは ASCII 01 文字または unicode 形式 \u0001 です。この文字は、java ランタイムエラーを回避するために 2 回目のエスケープする必要があります。以下は例です。
8=FIX.4.1 9=20 34=1 35=0 49=INVMGR 56=BRKR 1=BE.CHM.001 11=CHM0001-01 22=4 ...
8=FIX.4.1 9=20 34=1 35=0 49=INVMGR 56=BRKR 1=BE.CHM.001 11=CHM0001-01 22=4 ...
アノテーションの使用方法:
FIX - メッセージ
@Message(keyValuePairSeparator = "=", pairSeparator = "\u0001", type="FIX", version="4.1")
public class Order {
}
@Message(keyValuePairSeparator = "=", pairSeparator = "\u0001", type="FIX", version="4.1")
public class Order {
}
テストケースを確認する
タブなどの ASCII 文字を WIKI ページに表示できません。そのため、camel-bindy のテストケースを見て、FIX メッセージが(https://github.com/apache/camel/blob/main/components/camel-bindy/src/test/data/fix/fix.txt)や Order、Trailer、Header classes (https://github.com/apache/camel/blob/main/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/fix/simple/Order.java)のように表示されるかを確認します。