Quickfix C#启动器实现问题

时间:2014-02-10 17:21:45

标签: c# multithreading quickfix jinitiator

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

  1. 收听传入的QuoteRequest消息并将其保存到本地数据库/队列。
  2. 我们的用户可以根据这些报价请求点击出价。这些选择将保存在本地队列中。 服务需要读取队列并将Quote消息发送回发件人。
  3. 收听来自发件人和商店的QuoteResponse / BusinessReject和QuoteStatus消息。
  4. 我打算在我的服务中有两个线程。

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

    线程2:这将收听另一个本地队列并向接受者发送报价(出价)消息。报价将使用Session.SendToTarget发送出去。

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

    赞赏有关正确实施方法的任何意见/建议。

1 个答案:

答案 0 :(得分:0)

这只是一个连接,只有一个会话,所以应该只有一个启动器。

您可以设置不同的工作线程,但您的各种OnMessage()回调应该是一个常见的入口点。他们可以将收到的消息发送到您的线程(您可以让他们将收到的消息推送到队列或某些东西供您的线程使用)。您的主题可以执行他们需要执行的操作,然后根据需要调用sendToTarget

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