Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# QuickFixC启动器实现问题_C#_Multithreading_Quickfix_Jinitiator - Fatal编程技术网

C# QuickFixC启动器实现问题

C# QuickFixC启动器实现问题,c#,multithreading,quickfix,jinitiator,C#,Multithreading,Quickfix,Jinitiator,我正在c中实现QuickFix服务启动器,需要执行以下操作 侦听传入的QuoteRequest消息并将其保存到本地数据库/队列。 我们的用户将有能力点击这些报价请求的出价。这些选择将保存在本地队列中。 服务将需要读取队列并将报价消息发送回发件人。 收听来自发件人的QuoteResponse/BusinessReject和QuoteStatus消息,并将其存储在我们这边。 我计划在我的服务中有两个线程 线程1:这将用于侦听传入的QuoteRequest、Quote response、Busines

我正在c中实现QuickFix服务启动器,需要执行以下操作

侦听传入的QuoteRequest消息并将其保存到本地数据库/队列。 我们的用户将有能力点击这些报价请求的出价。这些选择将保存在本地队列中。 服务将需要读取队列并将报价消息发送回发件人。 收听来自发件人的QuoteResponse/BusinessReject和QuoteStatus消息,并将其存储在我们这边。 我计划在我的服务中有两个线程

线程1:这将用于侦听传入的QuoteRequest、Quote response、Businessreject和quotestatus消息。 在破解QuoteResponse消息时,将从OnMessage事件处理程序发送传出ExecutionReport。 这些消息将存储在我们的系统中,并发布在我们的站点/队列等上

线程2:这将侦听另一个本地队列,并将Quotebids消息发送给接受者。报价将使用Session.SendToTarget发送

有没有办法配置两个启动器实例以在每个线程中使用?或者创建一个启动器并添加两个会话。 如果两个启动器使用相同的套接字服务器和端口,它会工作吗?另外,如果一个消息没有被一个线程破解,那么它是否可以用于另一个线程? 我找不到任何处理传入和传出消息的多线程方法的示例


感谢对正确实施方法的任何意见/建议。

这只是一个连接,只有一个会话,因此应该只有一个启动器

您可以设置不同的工作线程,但是各种OnMessage回调应该是一个公共入口点。他们可以将接收到的消息发送到您的线程,您可以让他们将接收到的消息推送到队列中,或者让您的线程使用。您的线程可以执行它们需要执行的操作,然后根据需要调用sendToTarget

最重要的是,不要在QF回调中加入任何昂贵的逻辑;把它放进线里。除此之外,你可以做你想做的事