Пример #1
0
        protected static async Task <bool> ProcessMessages(IQueue <T> queue, IEnumerable <T> items, Func <T, Task> action)
        {
            if (queue == null)
            {
                throw new ArgumentNullException(nameof(queue));
            }

            if (action == null)
            {
                throw new ArgumentNullException(nameof(action));
            }

            if (items == null)
            {
                return(false);
            }

            foreach (var item in items)
            {
                var success = false;

                try
                {
                    await action(item);

                    success = true;
                }
                catch (Exception ex)
                {
                    Resgrid.Framework.Logging.LogException(ex);
                    queue.AddItem(item);
                    success = false;
                }
                finally
                {
                    if (success)
                    {
                        //queue.DeleteItem(message);
                    }
                }
            }

            return(true);
        }
Пример #2
0
        protected static void ProcessMessages(IQueue <T> queue, IEnumerable <T> items, Action <T> action)
        {
            if (queue == null)
            {
                throw new ArgumentNullException("queue");
            }

            if (action == null)
            {
                throw new ArgumentNullException("action");
            }

            if (items == null)
            {
                return;
            }

            foreach (var item in items)
            {
                var success = false;

                try
                {
                    action(item);
                    success = true;
                }
                catch (Exception ex)
                {
                    Resgrid.Framework.Logging.LogException(ex);
                    queue.AddItem(item);
                    success = false;
                }
                finally
                {
                    if (success)
                    {
                        //queue.DeleteItem(message);
                    }
                }
            }
        }