3

假设我正在运行一个基于 Web 的交换并且有一个新客户注册。我给该客户一个新的 CompID,现在我想将该 CompID 添加到我的接受者。我必须重新启动我的接受器还是可以动态完成?

必须提前就 CompID 达成一致,然后将其粘贴到某个配置中,这似乎不是很有可扩展性。

我已经看到了一些应该这样做的示例,但它们似乎只是将配置更改为几乎忽略发件人/目标 CompID,方法是将它们设置为*. 还有其他方法吗?

4

2 回答 2

3

查看DynamicAcceptorSessionProviderExecutor 示例中的 以及如何使用它。Executor 示例从设置文件中读取会话“模板”并将它们与接受者端点 IP 地址相关联。接受器模板由“AcceptorTemplate=true”设置标识。任何会话 ID 字段,包括 FIX 版本,都可以使用通配符,而不仅仅是 SenderCompID。

有关如何定义会话模板的示例,请参见 executor_dynamic.cfg。在此配置中,SenderCompID 和 TargetCompID 都是通配符,并且定义了各种 FIX 版本的模板(以指定适当的数据字典文件)。

当收到未知会话 ID 的消息时,DynamicAcceptorSessionProvider将尝试将会话 ID 与模板的通配符会话 ID 匹配。如果找到匹配项,则会自动创建新会话并将其添加到接受器,就好像它已在设置中明确定义一样。新会话将具有接受者会话模板中定义的设置。

DynamicAcceptorSessionProvider是一个AcceptorSessionProvider使用设置文件来支持动态会话创建的实现。但是,您也可以实现自定义AcceptorSessionProvider,例如,可以根据数据库信息动态创建会话。

于 2013-10-30T01:00:17.963 回答
2

我认为您想修复TargetCompID并发送一个唯一SenderCompID的供每个用户使用。然后SenderCompID在接受器配置中将 设置为*. 这将允许接受所有SenderCompIDs。但是,您将需要在代码中的某个位置使用工具来根据您的用户数据库检查每个订单。如果用户(SenderCompID)无效,那么您将发送拒绝消息。许多实现还将使用隧道和列入白名单的 IP 地址,以确保没有不需要的连接进入。

于 2013-10-29T11:35:21.990 回答