You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

95 lines
2.2 KiB

using NetMQ;
using NetMQ.Sockets;
using System;
namespace EC.Utils.ZMQ
{
public class ZMQRequestHelper
{
public static string _dbSvrServer = "";
public ZMQRequestHelper(string dbSvrServer)
{
_dbSvrServer = dbSvrServer;
}
public string RequestFromServer(string jsonstr)
{
try
{
using (var requestSocket = new RequestSocket(_dbSvrServer))
{
requestSocket.SendFrame(jsonstr);
var timeout = new TimeSpan(0, 0, 1);
string recdata = "";
bool recSuccess = requestSocket.TryReceiveFrameString(timeout, out recdata);
// byte[] recdata = requestSocket.ReceiveFrameBytes();
if (recSuccess)
{
return recdata;
}
}
}
catch (Exception ex)
{
LogFactory.GetLogger().Error(ex);
}
return "";
}
/// <summary>
/// 通过zmq 访问服务器 类似API
/// </summary>
/// <param name="method"></param>
/// <param name="jsonstr"></param>
/// <returns></returns>
public ResultModel RequestFromServer(string method, string jsonstr)
{
RequestModel requestModel = new RequestModel();
requestModel.method = method;
requestModel.jsonstr = jsonstr;
return RequestFromServer(requestModel);
}
public ResultModel RequestFromServer(RequestModel requestModel)
{
ResultModel resultModel = new ResultModel();
try
{
using (var requestSocket = new RequestSocket(_dbSvrServer))
{
requestSocket.SendMoreFrame(requestModel.method).SendFrame(requestModel.jsonstr);
var timeout = new TimeSpan(0, 0, 3);
string result = "";
bool recSuccess = requestSocket.TryReceiveFrameString(timeout, out result);
// byte[] recdata = requestSocket.ReceiveFrameBytes();
if (recSuccess)
{
string recdata = "";
recSuccess = requestSocket.TryReceiveFrameString(timeout, out recdata);
if (recSuccess)
{
resultModel.result = result;
resultModel.jsonstr = recdata;
return resultModel;
}
else
{
resultModel.result = DBMethod.Net_Error;
}
}
else
{
resultModel.result = DBMethod.Net_Error;
}
}
}
catch (Exception ex)
{
LogFactory.GetLogger().Error(ex);
resultModel.result = DBMethod.Net_Error;
}
return resultModel;
}
}
}