Esempio n. 1
0
        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");
            }
        }
Esempio n. 2
0
        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();
            }
        }