60.2.5. 5.消息
Message 注解用于识别模型的类,它们将包含键值对字段。这种格式主要在财务交换协议消息(FIX)中使用。但是,此注解可用于任何其他格式,其中数据由键标识。密钥对值可以通过分隔符相互分隔,可以是类似 tab delimitor (unicode 表示 : \u0009
)或头头(unicode 表示 : \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 | version 定义消息的版本(如 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 ...
以及如何使用注解:
FIX - 消息
@Message(keyValuePairSeparator = "=", pairSeparator = "\u0001", type="FIX", version="4.1") public class Order { }
查看测试情况
ASCII 字符(如 tab …)无法在 WIKI 页面中显示。因此,请看 camel-bindy 的测试案例,以查看 FIX 信息是如何显示的(https://github.com/apache/camel/blob/main/components/camel-bindy/src/test/data/fix/fix.txt)和 Order, Trailer, Header class (https://github.com/apache/camel/blob/main/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/fix/simple/Order.java)。