如何在同一会话中向不同的 TargetCompID 发送和接收修复消息
public void ToAdmin(Message message, SessionID sessionID)
{
if ( (message.ToString().IndexOf("35=D") > 0) || (message.ToString().IndexOf("35=G") > 0) || (message.ToString().IndexOf("35=F") > 0))
{ message.Header.SetField(new TargetCompID("1"));
}
}
9:56:38 ToApp: 8=FIX.4.2 9=261 35=D 34=63 49=555 50=BBBBBB 52=20180918-06:56:38 56=0 128=1 129=AAAAAA 1=555-----126 11=1 21=1 22=4 38=2500 40=2 44=0.03 47=C 48=JO3109211016 54=2 55=JO3109211016 58=测试 修复 Connec 59=1 60=20180918-09:56:38.579 109=126 110=50 111=100 9596=2 9947=55500350 10=140 9:56:38 交换: 8=FIX.4.2 9=115 35=3 34=73 49=0 50=AAAAAA 52=20180918-09:56:38 56=555 45=63 58=不能 进程顺序:目标 CompID 无效 372=D 10=067
TargetCompID 是 Session 标识符的一部分,请参见 http://quickfixn.org/tutorial/configuration.html:
FIX会话在 QuickFix/N 中定义为 BeginString(FIX 版本号(、SenderCompID(您的 ID(和 TargetCompID(您的交易对手的 ID(的唯一组合。
因此,尝试在同一会话中将消息发送到不同的TargetCompID
似乎是不正确的;您需要为每个TargetCompID
创建一个单独的会话。
最简单的方法是在配置文件中定义会话(请参阅上面的链接(;或者,您可以动态创建它们 - 请参阅 http://lists.quickfixn.com/pipermail/quickfixn-quickfixn.com/2016q1/000277.html