Example #1
0
        private void DoActualWork(MyMessage message)
        {
            var worker = workers.Take();

            try
            {
                worker(message);
            }
            finally
            {
                workers.Add(worker);
            }
        }
Example #2
0
        private void ProcessMessage(MyMessage message)
        {
            messagesProcessed++;

            RandomlyThrowException();

            DoActualWork(message);
        }
Example #3
0
        private void TaskTheMessages(MyMessage message)
        {
            Task.Factory.StartNew(() => ProcessMessage(message))
            .ContinueWith(task =>
            {
                if (task.Exception == null)
                    return;

                using (var channel = bus.OpenPublishChannel())
                    channel.Publish(message);

                Console.WriteLine("*** An error occurred. ***");
                errorsThatOccurred++;
            });
        }