/// <summary> /// 根据配置创建消费者 /// </summary> /// <param name="itemKey"></param> private void RunFactory(MqConsumerItemKey itemKey) { //pull 方式消费消息 var configModel = TaskList.First(t => t.Exchange == itemKey.Exchange && t.RoutingKey == itemKey.RoutingKey && t.QueueName == itemKey.QueueName); if (configModel.MqMessageType == 0) { Thread th = new Thread(() => ParameterizedThreadStart(itemKey)); th.Name = string.Format("{0}-{1}-{2}", itemKey.Exchange, itemKey.RoutingKey, itemKey.QueueName); th.IsBackground = true; threadList.Add(th); } //sub 方式消费消息 else { var consumer = QueueFactory <IConsumer> .Create(); consumer.Subscribe(itemKey.Exchange, itemKey.QueueName, itemKey.RoutingKey, configModel.IsProperties, MqMessageExecute, false); Consumers.Add(consumer); } }
private void ParameterizedThreadStart(MqConsumerItemKey mqItemKey) { var configModel = TaskList.FirstOrDefault(t => t.Exchange == mqItemKey.Exchange && t.RoutingKey == mqItemKey.RoutingKey && t.QueueName == mqItemKey.QueueName); //创建一个消费者 if (configModel.IsNull()) { //记录日志 LogHelper.LogInfo(logSource, string.Format("ParameterizedThreadStart 配置PULL方式消费者未找到业务配置: {0};{1};{2}", mqItemKey.Exchange, mqItemKey.RoutingKey, mqItemKey.QueueName)); return; } var Consumer = QueueFactory <IConsumer> .Create(); Consumers.Add(Consumer); if (configModel.MqMessageType == 0) { do { Consumer.Pull(mqItemKey.Exchange, mqItemKey.QueueName, mqItemKey.RoutingKey, MqMessageExecute); var timeInterval = configModel.TimeInterval == 0 ? 10 : configModel.TimeInterval; Thread.CurrentThread.Join(timeInterval); }while (true); } }