public void Start() { if (ActionWorker != null) { return; } ActionWorker = new DynamicWorker(DynamicWaitType.DynamicWait) { ActionTask = () => { try { //in case of ResetEvent and fixed interval using //ReceiveAsync(ActionWorker); //return false; //in case of DynamicWait or fixed interval using var ack = Receive(); OnCompleted(ack); return(ack != null); } catch (Exception ex) { if (_Logger != null) { _Logger.Exception("Session listener ActionTask error ", ex); } return(false); } }, ActionLog = (LogLevel level, string message) => { if (_Logger != null) { _Logger.Log((LoggerLevel)level, message); } }, Name = "SessionListener", Interval = 100, MaxThreads = 1 }; ActionWorker.Start(); if (_Logger != null) { _Logger.Info("SessionListener Started"); } }
public void StartDynamicWorker() { if (EnablePersistQueue) { if (ActionWorker != null) { return; } ActionWorker = new DynamicWorker(DynamicWaitType.DynamicWait) { ActionLog = (LogLevel level, string message) => { if (_Logger != null) { _Logger.Log((LoggerLevel)level, message); } }, ActionTask = () => { try { var item = Dequeue(); if (item != null) { OnItemReceived(item); return(true); } } catch (Exception ex) { if (_Logger != null) { _Logger.Exception("Topic Sender Worker error ", ex); } } return(false); }, Interval = 100, MaxThreads = 1 }; ActionWorker.Start(); } }