57.2.5. 5.消息
Message 注解用于识别将包含键值对字段的模型类。这种格式主要用于财务交换协议消息(FIX)。不过,此注解可用于密钥标识数据的任何其他格式。密钥对值相互分隔在分隔符后,可以是一个特殊字符,如 tab delimitor (unicode 表示 : \u0009)或一开始标题(unicode representation : \u0001)
要使用 FIX 消息,模型必须包含与根消息类关联的标头和 Trailer 类,这些类可以是 Order 类。这不是强制性,但当您使用 camel-bindy 与 camel-fix (基于快速Fix 项目的修复网关)时,将非常有用。
| 注解名称 | 记录类型 | 级别 |
|---|---|---|
| 消息 | 键值对 | 类 |
| 参数名称 | 类型 | 必需 | 默认值 | info |
|---|---|---|---|---|
| keyValuePairSeparator | 字符串 | ✓ | 键值对分隔符用于从其键(必需)分割值。可以是 '\u0001'、'\u0009'、'#' 或 'anything'。 | |
| pairSeparator | 字符串 | ✓ | 对用于分割键值对的 对分隔符(必需)。可以是 '='、';' 或 'anything"。 | |
| crlf | 字符串 | WINDOWS | 用于在每个记录后添加回车的字符(可选)。可能的值可能 = WINDOWS、UNIX、MAC 或自定义.如果您指定之前列出的三个值,则输入(custom)的值将用作 CRLF 字符。 | |
| isOrdered | 布尔值 | false | 指明消息是否在输出中排序。此注解与模型的消息类关联,并且必须声明一次。 | |
| name | 字符串 | 描述消息的名称(可选) | ||
| type | 字符串 | 修复 | type 用于定义消息的类型(例如 FIX、EMX、…)(可选) | |
| version | 字符串 | 4.1 | 版本定义了消息的版本(如 4.1、…)(可选) |
案例 1:分隔符 = 'u0001'
用于隔离 FIX 消息中的键值对字段的分隔符为 ASCII 01 字符或 unicode 格式 \u0001。此字符必须再次转义,以避免 java 运行时错误。下面是一个示例:
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 {
}
查看测试问题单
选项卡 … 不能显示在 WIKI 页面中。因此,请仔细检查 camel-bindy 的测试案例,了解 FIX 消息的外观和顺序、Trailer、Header 类(https://github.com/apache/camel/blob/main/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/fix/simple/Order.java)。https://github.com/apache/camel/blob/main/components/camel-bindy/src/test/data/fix/fix.txt