public virtual async void StartQueues(IEnumerable <MessageQueue> topicQueues, Func <MessageQueue, bool> canInvoke, Action <QueueMessage> whenInvoke) { if (canInvoke == null) { return; } if (whenInvoke == null) { return; } if (topicQueues == null || topicQueues.All(x => x.QueueStatus == QueueStatus.wroking)) { return; } foreach (var queue in topicQueues) { if (queue.QueueStatus == QueueStatus.stop) { queue.SetQueueStatus(QueueStatus.wroking); await QueueProcessor.ProcessQueueAsync( queue, () => { return(canInvoke(queue)); }, (queueMessage) => { whenInvoke(queueMessage); } ); } } }