项目使用的 rabbit RabbitMQ.Client, Version=5.0.0.0
最近项目用户量上来后,偶现 None of the specified endpoints were reachable 异常
解决方案:修改MQ请求的超时时间(参数TimeoutMilliseconds 由之前的30秒改成默认10秒,个别调用时间5秒) 发布后系统稳定
/// <summary>
///
/// </summary>
/// <param name="jsonStr"></param>
/// <param name="className"></param>
/// <param name="actionName"></param>
/// <param name="authCode"></param>
/// <returns></returns>
public static string SendMessage(string jsonStr, string className, string actionName, string authCode, int timeout = 10000)
{
if (cf.HostName == null || string.IsNullOrWhiteSpace(cf.HostName) || cf.HostName == "localhost")
{
cf.HostName = hostName;
cf.VirtualHost = virtualHost;
cf.UserName = userName;
cf.Password = password;
}
using (IConnection conn = cf.CreateConnection())
{
using (IModel ch = conn.CreateModel())
{
var requst = new RMQRequest
{
ClassName = className,
ActionName = actionName,
JStr = jsonStr,
Timestamp = DateTime.Now
};
object[] reqobj = new object[1];
reqobj[0] = JsonConvert.SerializeObject(requst);
SimpleRpcClient client = new SimpleRpcClient(ch, authCode);
client.TimeoutMilliseconds = timeout;
client.TimedOut += new EventHandler(TimedOutHandler);
client.Disconnected += new EventHandler(DisconnectedHandler);
var reply = client.Call(reqobj);
if (reply == null)
{
return null;
}
else
{
return reply[0].ToString();
}
}
}
}
|