public void Consume(IConsumeContext <WorkerAvailable <TMessage> > context)
        {
            IWorkerInfo <TMessage> worker = _workerCache.GetWorker <TMessage>(context.Message.ControlUri, x =>
            {
                if (_log.IsInfoEnabled)
                {
                    _log.InfoFormat("Discovered New Worker: {0}", context.Message.ControlUri);
                }

                WorkerInfo workerInfo = new WorkerInfo(context.Message.ControlUri, context.Message.DataUri);

                return(new WorkerInfo <TMessage>(workerInfo));
            });

            worker.Update(context.Message.InProgress,
                          context.Message.InProgressLimit,
                          context.Message.Pending,
                          context.Message.PendingLimit,
                          context.Message.Updated);

            if (_log.IsDebugEnabled)
            {
                _log.DebugFormat("Worker {0}: {1} in progress, {2} pending", worker.DataUri, worker.InProgress,
                                 worker.Pending);
            }
        }