【问题标题】:Quickfix C# initiator implementation questionsQuickfix C#启动器实现问题
【发布时间】:2014-02-10 17:21:44
【问题描述】:

我正在c#中实现QuickFix服务启动器,需要做以下事情。

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

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

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

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

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

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

【问题讨论】:

    标签: c# multithreading quickfix jinitiator


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-26
      • 1970-01-01
      • 2021-06-21
      • 1970-01-01
      • 1970-01-01
      • 2017-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多