我正在使用 DEALER-ROUTER 模式在客户端和工作人员之间进行某种负载平衡。
我想知道如何在客户端和服务器之间设置超时以避免无限等待。
我尝试设置 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 套接字接收消息时设置超时?
谢谢您的帮助。