void Consume(WorkerAvailable <TMessage> message) { WorkerDetails worker; lock (_workers) { worker = _workers.Retrieve(message.ControlUri, () => { return(new WorkerDetails { ControlUri = message.ControlUri, DataUri = message.DataUri, InProgress = message.InProgress, InProgressLimit = message.InProgressLimit, Pending = message.Pending, PendingLimit = message.PendingLimit, LastUpdate = message.Updated, }); }); } worker.UpdateInProgress(message.InProgress, message.InProgressLimit, message.Pending, message.PendingLimit, message.Updated); if (_log.IsDebugEnabled) { _log.DebugFormat("Worker {0}: {1} in progress, {2} pending", message.DataUri, message.InProgress, message.Pending); } }
private void MakeWorkerAvailable(WorkerAvailable message) { var nextmessage = GetNextCharacter(); if (nextmessage != null) { Sender.Tell(nextmessage); } else { _availableWorkers.Enqueue(Sender); } }
void PublishWorkerAvailability() { try { var message = new WorkerAvailable <TMessage>(_controlUri, _dataUri, _inProgress, _inProgressLimit, _pendingMessages.PendingMessageCount(), _pendingLimit); _updatePending = false; _bus.Publish(message); } catch { } }
public void Consume(WorkerAvailable <T> message) { WorkerDetails worker = _workers.Retrieve(message.ControlUri, () => { return(new WorkerDetails { ControlUri = message.ControlUri, DataUri = message.DataUri, InProgress = message.InProgress, InProgressLimit = message.InProgressLimit, Pending = message.Pending, PendingLimit = message.PendingLimit, LastUpdate = message.Updated, }); }); worker.UpdateInProgress(message.InProgress, message.InProgressLimit, message.Pending, message.PendingLimit, message.Updated); }
public void Consume(IConsumeContext <PingWorker> context) { try { var message = new WorkerAvailable <TMessage>(_worker.ControlUri, _worker.DataUri, _inProgress, _inProgressLimit, _pending.PendingMessageCount(), _pendingLimit); context.Respond(message); if (_log.IsDebugEnabled) { _log.DebugFormat("Worker {0}: {1} in progress, {2} pending", _worker.DataUri, _inProgress, _pending); } } catch { } }
public void PublishWorkerAvailability(TimeSpan timeToLive) { try { var message = new WorkerAvailable <TMessage>(_worker.ControlUri, _worker.DataUri, _inProgress, _inProgressLimit, _pending.PendingMessageCount(), _pendingLimit); _updatePending = false; _worker.Bus.ControlBus.Publish(message, x => x.ExpiresAt(DateTime.UtcNow + timeToLive)); if (_log.IsDebugEnabled) { _log.DebugFormat("Worker {0}: {1} in progress, {2} pending", _worker.DataUri, _inProgress, _pending); } } catch { } }