2014-01-07 38 views
0

我有一個簡單的服務器上運行:ZeroMQ可以在單端口上以併發多線程模式工作嗎?

 using (var context = ZmqContext.Create()) 
     using (var socket = context.CreateSocket(SocketType.REP)) { 

      Console.WriteLine("Starting on {0}", tcpAddress); 

      socket.Bind(tcpAddress); 

      while (true) { 
       var replyMessage = socket.Receive((Encoding.Unicode)); 
       Console.WriteLine("Received: [{0}]", replyMessage); 

       // Do some stuff 

       socket.Send(string.Format("Received [{0}]", replyMessage), Encoding.Unicode);        
      }  
     } 

當我使用一個客戶端請求的信息,它返回,但是當多個客戶端點擊服務器的請求排隊,並正在等待服務器以響應,因爲它一次只能處理一個請求。

有沒有辦法讓這個ZeroMQ服務器能夠監聽多個客戶端請求的tcpaddress並同時處理它們?

回答

1

我根據zeromq guide中的示例編寫了一個簡單的請求/響應多線程服務器。

從引導代碼: https://github.com/imatix/zguide/blob/master/examples/C%23/mtserver.cs

然而,該解決方案不是非常可伸縮的。

+0

感謝盧克,我使用SmartThreadPool做了類似的事情,但是想知道是否有更通用的和可擴展的東西。如果必須,我會按照您的建議推出自己的產品。 –

相關問題