Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asynchronous NetMQ-轮询经销商套接字和超时_Asynchronous_Timeout_Zeromq_Netmq - Fatal编程技术网

Asynchronous NetMQ-轮询经销商套接字和超时

Asynchronous NetMQ-轮询经销商套接字和超时,asynchronous,timeout,zeromq,netmq,Asynchronous,Timeout,Zeromq,Netmq,我正在使用经销商-路由器模式在客户端和工作者之间进行某种负载平衡 我想知道如何设置客户端和服务器之间的超时,以避免无限等待 我试图设置TryReceiveMultipartMessage方法的超时参数,但没有效果。我强迫服务器在10秒后回复,甚至将超时设置为1秒,我收到了响应 我的客户代码是: public void Main(string Args[]) { using(ctx = NetMQContext.Create()) {

我正在使用经销商-路由器模式在客户端和工作者之间进行某种负载平衡

我想知道如何设置客户端和服务器之间的超时,以避免无限等待

我试图设置TryReceiveMultipartMessage方法的超时参数,但没有效果。我强迫服务器在10秒后回复,甚至将超时设置为1秒,我收到了响应

我的客户代码是:

    public void Main(string Args[])
    {
        using(ctx = NetMQContext.Create())
        {
            using(client = ctx.CreateDealerSocket())
            {
                client.Options.Identity = Encoding.Unicode.GetBytes(Guid.NewGuid().ToString());
                client.Connect("tcp://127.0.0.1:5556");
                client.ReceiveReady += Client_ReceiveReady;
                poller.AddSocket(client);
                poller.PollTillCancelled();
            }
    }


    void Client_ReceiveReady(object sender, NetMQSocketEventArgs e)
    {
        NetMQMessage clientMessage = new NetMQMessage();
        TimeSpan timeout = TimeSpan.FromMilliseconds(1000);
        if (e.Socket.TryReceiveMultipartMessage(timeout, ref clientMessage))
        {
            ...
        }

    }
如何设置从经销商插座接收消息的超时


感谢您的帮助。

当您使用轮询器时,您将在收到消息时收到通知,因此使用超时不会产生任何影响。我不确定我是否理解你想要实现的目标,或者问题到底是什么。使用轮询器,您不必无限期地等待,当消息准备好接收时,轮询器将引发事件。确定。我意识到我的问题毫无意义。在轮询上下文中,我不必等待,因为它是异步的。我错误地认为对我的dealer套接字的异步查询将创建一个新的套接字。我的错;)当您使用轮询器时,您将在消息准备好接收时收到通知,因此使用超时不会产生任何影响。我不确定我是否理解你想要实现的目标,或者问题到底是什么。使用轮询器,您不必无限期地等待,当消息准备好接收时,轮询器将引发事件。确定。我意识到我的问题毫无意义。在轮询上下文中,我不必等待,因为它是异步的。我错误地认为对我的dealer套接字的异步查询将创建一个新的套接字。我的错;)