使用ZMQ.SocketType.REP(回复)消息传递套接字与ZeroMQ,我收到消息,然后发回"确定"消息.
现在,我正在本地尝试(从同一台机器上运行的同一个C#控制台应用程序发送/接收消息).
相当经常(大约1500条消息后),该行:
var receivedBytes = _recvSocket.Recv();
......会抛出异常: Context was terminated
我的问题是,为什么会发生这种情况,你如何从中恢复?
我有一个System.Threading.Thread致力于运行我的"服务器端"ZeroMQ回复套接字,这是它运行的循环:
private static void MessagingLoopReceive(object state)
{
if (_zmqc == null)
{
_zmqc = new ZMQ.Context(1);
}
_recvSocket = _zmqc.Socket(ZMQ.SocketType.REP);
_recvSocket.Bind("tcp://*:5556");
while (true)
{
if (_queueStop)
{
break;
}
//Console.WriteLine("Server blocking for receive...");
var receivedBytes = _recvSocket.Recv();
if (receivedBytes != null && receivedBytes.Length > 0)
{
//Console.WriteLine("Server message received from client, sending OK");
_recvSocket.Send("OK", Encoding.ASCII);
//Console.WriteLine("Server OK sent, adding message to queue");
_queuedMessages.Enqueue(receivedBytes);
}
else
{
Thread.Sleep(1);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3511 次 |
| 最近记录: |