public consumeThreadTask(IMessageHandler messageHandler, MessageCircleQueue queue) { this.messageHandler = messageHandler; this.queue = queue; }
public ReportTask(MessageCircleQueue queue, string reportUrl, string appKey, string secret) { this.queue = queue; this.reportUrl = reportUrl; this.appKey = appKey; this.secret = secret; client = new JushitaTopClient(reportUrl, appKey, secret); lastReportTime = Message.currentTimeMills(); }
public void start() { if (this.messageHandler == null) throw new NullReferenceException("messageHandler must not be null"); if (this.reportUrl == null) throw new NullReferenceException("reportUrl must not be null"); int queueSizeMultiple = 20; long reportTimerInterval = 50; //初始化消息队列 queue = new MessageCircleQueue(reportCount * queueSizeMultiple, timeoutSeconds); //初始化消费线程数组 consumerThreads = new Thread[consumerThreadCount]; //构建消费者线程的Task任务 consumeTask = new consumeThreadTask(messageHandler, queue); //构建线程委托任务 ThreadStart threadTask = new ThreadStart(consumeTask.doTask); for (int i = 0; i < consumerThreads.Length; i++) { consumerThreads[i] = new Thread(threadTask); consumerThreads[i].Start(); } reportTask = new ReportTask(queue, reportUrl, appKey, secret); reportTask.reportCount = reportCount; reportTask.reportInterval = reportInterval; TimerCallback tcb = reportTask.run; timerTask = new Timer(tcb, null, reportTimerInterval, reportTimerInterval); }