0

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

  1. 收听传入的 QuoteRequest 消息并将它们保存到本地数据库/队列。
  2. 我们的用户将能够对这些报价请求进行投标。这些选择将保存在本地队列中。服务将需要读取队列并将 Quote 消息发送回发送者。
  3. 收听来自发件人的 QuoteResponse / BusinessReject 和 QuoteStatus 消息并存储在我们端。

我计划在我的服务中有两个线程。

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

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

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

感谢有关正确实施方法的任何输入/建议。

4

1 回答 1

0

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

您可以设置不同的工作线程,但您的各种OnMessage()回调应该是一个共同的入口点。他们可以将接收到的消息发送到您的线程(您可以让他们将接收到的消息推送到队列或其他东西以供您的线程使用)。您的线程可以做他们需要做的事情,然后sendToTarget酌情调用。

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

于 2014-02-10T19:26:25.200 回答