/// <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); }
/// <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); }