我正在使用c#中的QuickFix服务启动器实现,需要执行以下操作。
我打算在我的服务中有两个线程。
线程1:这将用于收听传入的QuoteRequest,Quote响应,Businessreject和quotestatus消息。 传出的ExecutionReport将从OnMessage事件处理程序发送,同时破解QuoteResponse消息。 这些消息将存储在我们的系统中并发布在我们的站点/队列等上。
线程2:这将收听另一个本地队列并向接受者发送报价(出价)消息。报价将使用Session.SendToTarget发送出去。
有没有办法配置在每个线程中使用的两个启动器实例?或者我创建一个启动器并添加两个会话。 如果两个启动器都使用相同的套接字服务器和端口,它会工作吗?此外,如果一个消息没有被一个线程破解,那么它可用于另一个线程吗? 我找不到任何多线程方法来处理传入和传出消息的例子。
赞赏有关正确实施方法的任何意见/建议。
答案 0 :(得分:0)
这只是一个连接,只有一个会话,所以应该只有一个启动器。
您可以设置不同的工作线程,但您的各种OnMessage()
回调应该是一个常见的入口点。他们可以将收到的消息发送到您的线程(您可以让他们将收到的消息推送到队列或某些东西供您的线程使用)。您的主题可以执行他们需要执行的操作,然后根据需要调用sendToTarget
。
最重要的是,尽量不要在QF回调中加入任何昂贵的逻辑;把它放在线程中。除此之外,你可以做你想做的事。