public DefaultRabbitMQPersistentConnection(IConnectionFactory connectionFactory, string name, int retryCount, IEventBusSubManagerFactory fact) { Name = name; _connectionFactory = connectionFactory ?? throw new ArgumentNullException(nameof(IConnectionFactory)); _logger = new ConsoleLog(); _retryCount = retryCount; SubsFactory = fact; }
/// <summary> /// 使用订阅管理工厂和指定的连接字符串 创建一个默认的MQ连接 /// </summary> /// <param name="mqConnstr">MQ连接字符串</param> /// <param name="subFactory">订阅管理工厂</param> public void Create(string mqConnstr, IEventBusSubManagerFactory subFactory = null) { subFactory ??= default_sub_fact; var conn = CreateConnect(mqConnstr, out string source_name); if (factorys.TryGetValue(source_name, out _)) { throw new Exception($"repeat create mq connection by the name {source_name}"); } var mqconn = new DefaultRabbitMQPersistentConnection(conn, source_name, _retryCount, subFactory); if (!factorys.TryAdd(source_name, mqconn)) { mqconn.Dispose(); return; } mqconn.ConnectFail += Mqconn_ConnectFail; }
/// <summary> /// 创建一个默认的MQ连接管理池实例 /// </summary> /// <param name="retryCount">MQ断开重连尝试次数</param> /// <param name="subfactory">默认订阅管理工厂类</param> public DefaultMqConnectSource(int retryCount, IEventBusSubManagerFactory subfactory) { default_sub_fact = subfactory ?? throw new ArgumentNullException(nameof(IEventBusSubManagerFactory)); factorys = new Dictionary <string, DefaultRabbitMQPersistentConnection>(StringComparer.CurrentCultureIgnoreCase); _retryCount = retryCount; }