如何使用Quickfixj删除BodyLength字段(标记9)或CheckSum(标记10)

时间:2013-06-13 22:17:48

标签: java quickfix fix-protocol

我是quickfix和java的初学者。

通常当我想删除quickfix消息中的字段时,我使用带有标记的removeField方法作为参数,但这似乎不适用于2个自动生成的字段 - BodyLength(标记9)和CheckSum(标签10)。

例如,我创建了一条消息,然后打印。

System.out.println(message)

给出

8 = FIX.4.29 = 8635 = 149 = WFSComp23452 = 20130613-21:45:22.28256 = ClientComp1234109 = default112 = default10 = 067

然后我删除一个字段,比如标记号8, 以下

message.getHeader().removeField(8);

再次打印,我得到了

9 = 7435 = 149 = WFSComp23452 = 20130613-22:06:32.81956 = ClientComp1234112 = default10 = 105

删除字段,但当我尝试以相同的方式删除9标记:

message.getHeader().removeField(9);

我打印时的输出产生相同的代码而没有删除字段:

9 = 7435 = 149 = WFSComp23452 = 20130613-22:06:32.81956 = ClientComp1234112 = default10 = 105

9场还在那里!

我的猜测是因为quickfix会自动生成体长,但是如何将其删除?谢谢。

指向quickfix的链接:

的Javadoc: http://www.quickfixj.org/quickfixj/javadoc/1.5.3/

http://www.quickfixj.org/

1 个答案:

答案 0 :(得分:3)

是的,QuickFIX会自动生成BodyLength和Checksum。

我无法想象为什么在世界上你认为你需要删除这些字段,但是如果你真的想要删除这些字段的消息字符串,你可以在事后使用正则表达式来修改它:

message.toString().replaceAll("\09=[0-9]*","").replaceAll("\010=[0-9]*","")

但是,我真的没有理由这样做。