【问题标题】:Can ZeroMQ work in a concurrent multithread mode on a single port?ZeroMQ 可以在单个端口上以并发多线程模式工作吗?
【发布时间】:2014-01-08 07:14:17
【问题描述】:

我有一个简单的服务器正在运行:

        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 上侦听多个客户端请求并同时处理它们?

【问题讨论】:

    标签: .net multithreading zeromq


    【解决方案1】:

    我根据zeromq guide 中的示例编写了一个简单的请求/响应多线程服务器。

    指南中的代码: https://github.com/imatix/zguide/blob/master/examples/C%23/mtserver.cs

    但是,该解决方案的可扩展性不是很好。

    【讨论】:

    • 感谢 Luke,我使用 SmartThreadPool 做了类似的事情,但想知道是否有更通用和可扩展的东西。如果必须,我会按照您的建议推出自己的类似产品。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 2020-09-03
    • 2012-05-29
    相关资源
    最近更新 更多