Skip to content

Instantly share code, notes, and snippets.

@stefansedich
Created October 13, 2011 10:10
Show Gist options
  • Select an option

  • Save stefansedich/1283898 to your computer and use it in GitHub Desktop.

Select an option

Save stefansedich/1283898 to your computer and use it in GitHub Desktop.
public Task<WorkItemDispatchResult> DispatchWorkItem(DateTime now, WorkItem dbWorkItem)
{
return new Task<WorkItemDispatchResult>(() =>
{
try
{
var workItem = dbWorkItem.DeserializeWorkItemData();
_log.Debug("Dispatching work item: {0}, work-item type: {1}, dispatch attempts: {2}.", dbWorkItem.Id, workItem.GetType().FullName, dbWorkItem.NumberOfDispatchAttempts);
if (dbWorkItem.WithinLeaseExpiryTolerance(now) == false)
{
_log.Error("Lease timeout tolerance exceeded for work item {0}.", dbWorkItem.Id);
return WorkItemDispatchResult.Skipped;
}
_log.Debug("Running work item worker for work item: {0}.", dbWorkItem.Id);
CreateAndRunWorkerForWorkItem(workItem);
_log.Debug("Finished running work item worker for work item: {0}.", dbWorkItem.Id);
return WorkItemDispatchResult.Success;
}
catch (Exception ex)
{
_log.Error("Failed to run work item work for: {0}, exception: {1}.", dbWorkItem.Id, ex);
return WorkItemDispatchResult.Failed;
}
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment