/// <summary> /// 供重载构造函数初始化连接参数用 /// </summary> /// <param name="config"></param> protected void Init(RabbitMQConfigSection config) { _config = config; _connection = CreateNewConnection(_config); // 启动连接检测线程, AutomaticRecoveryEnabled 会自动恢复连接,所以不去检测了 // Task.Factory.StartNew(CheckConnectionAlive); }
/// <summary> /// 创建新连接,并放入池中 /// </summary> /// <returns></returns> static IConnection CreateNewConnection(RabbitMQConfigSection config) { var heartSecond = Convert.ToUInt16(config.HeartBeatSecond); if (heartSecond < 5) { heartSecond = 10; } ConnectionFactory connectionFactory = new ConnectionFactory { HostName = config.ServerIp, Port = config.ServerPort, UserName = config.UserName, Password = config.Password, //Socket read timeout is twice the hearbeat RequestedHeartbeat = heartSecond, AutomaticRecoveryEnabled = true, }; var name = string.IsNullOrEmpty(config.ConnectionName) ? "noName" : config.ConnectionName; var connection = connectionFactory.CreateConnection(name); return(connection); }
/// <summary> /// 队列池构造函数 /// </summary> /// <param name="config">服务器配置信息</param> private RabbitMQPool(RabbitMQConfigSection config) { Init(config); }