Ejemplo n.º 1
0
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="rmqList">rmq转发的列表</param>
        /// <param name="createExchange">是否创建Exchange</param>
        /// <param name="exchangeName">exchange的名字</param>
        /// <param name="exchangeType">exchange的类型,只有需要创建exchange时才有用</param>
        /// <param name="mqChangeCallBack">mq切换时的回调,第一个参数是旧的mq,第二个参数是新的mq</param>
        public LongRunClusterSupportProducer(List <RabbitMqConfig> rmqList, bool createExchange, string exchangeName, string exchangeType = ExchangeType.Direct, Action <RabbitMqConfig, RabbitMqConfig> mqChangeCallBack = null)
        {
            if (rmqList == null || rmqList.Count == 0)
            {
                throw new Exception("configList为空或null");
            }

            //重排增加随机
            this._rmqConfigList        = CollectionUtils.Shuffle(rmqList);
            this._needToCreateExchange = createExchange;
            this._exchangeName         = exchangeName;
            this._exchangeType         = exchangeType;
            this._mqChangeCallback     = mqChangeCallBack;

            //定义定时器
            _oneRunTimer = new OneRunTimerEx(OneRunTimerCallBack, dueTime: 1000, period: 19111, state: null, exceptionHandler: OneRunTimerExceptionHandler);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="rmqList">rmqList监听的List</param>
        /// <param name="createExhange">是否需要创建exchange</param>
        /// <param name="exchangeName">exchange的名字</param>
        /// <param name="exchangType">exchange的类型</param>
        /// <param name="createQueue">是否需要创建队列</param>
        /// <param name="queueName">队列名称,如果为空或者null表示必须创建临时队列,忽略createQueue参数</param>
        /// <param name="queueExchangeBindingKey">如果需要创建队列则需要创建binding,否则不需要创建binding  队列exchange的binding</param>
        /// <param name="mqChangeCallBack"></param>
        public LongRunClusterSupportConsumer(List <RabbitMqConfig> rmqList, bool createExhange, string exchangeName,
                                             string exchangType, bool createQueue, string queueName, string queueExchangeBindingKey, Action <RabbitMqConfig, RabbitMqConfig> mqChangeCallBack = null)
        {
            if (rmqList == null || rmqList.Count == 0)
            {
                throw new Exception("configList为空或null");
            }

            //重排增加随机
            this._rmqConfigList        = CollectionUtils.Shuffle(rmqList);
            this._needToCreateExchange = createExhange;
            this._exchangeName         = exchangeName;
            this._exchangeType         = exchangType;
            this._needToCreateQueue    = createQueue;
            this._queueName            = StringUtils.TrimEx(queueName);
            this._queueExchangeBinding = queueExchangeBindingKey;
            this._mqChangeCallback     = mqChangeCallBack;

            //定义定时器
            _oneRunTimer = new OneRunTimerEx(OneRunTimerCallBack, dueTime: 1000, period: 19711, state: null, exceptionHandler: OneRunTimerExceptionHandler);
        }