Example #1
0
 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;
 }
Example #2
0
        /// <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;
        }
Example #3
0
 /// <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;
 }