重新打开响应服务器时,NetMQ请求/响应有时会失败

时间:2020-10-24 03:46:38

标签: c# zeromq netmq

我正在尝试使用NetMQ从“请求/响应”模式发送和接收消息。 我想通过重新打开响应服务器来模拟网络断开连接。 重新打开响应服务器时,消息有时会失败。

我在做什么错?任何信息或协助将不胜感激。

请求客户端:

RequestSocket client = new RequestSocket();
client.Connect(address);
while(true)
{
    client.SendFrame(dataBytes);
    client.ReceiveFrameString();
    Thread.Sleep(100);
}

还尝试了使用Try *的Request Client,并在一段时间内未收到任何响应的情况下重新连接:

bool success = false;
while(true)
{
    success = client.TrySendFrame(TimeSpan.FromMilliseconds(500), dataBytes);
    if (success)
    {
        break;
    }
    Thread.Sleep(100);
}

int count = 0;
success = false;
while(true)
{
    success = client.TryReceiveFrameString(TimeSpan.FromMilliseconds(500), out string s);
    if (success)
    {
        break;
    }
    count++;
    if (count >= 50)
    {
        client.Disconnect(address);
        client.Connect(address);
        break;
    }
    Thread.Sleep(100);
}

响应服务器(手动再次关闭并打开程序):

ResponseSocket server = new ResponseSocket(connection);
while(true)
{
    if (server.TryReceiveFrameBytes(TimeSpan.FromMilliseconds(300), out byte[] dataBytes))
    {
        server.SendFrame("Response");
    }
    Thread.Sleep(100);
}

0 个答案:

没有答案