public Task <IMessageTransaction> Receive(TimeSpan?timeout = null) { return(Task.Factory.StartNew(() => { LocalMessage message; if (!this.queue.TryTake(out message, timeout ?? TimeSpan.FromSeconds(60))) { return null; } IMessageTransaction transaction = new LocalMessageTransaction( message, () => { }, // nothing to do on commit () => { message.Failed(); // notify failure, increases retry count this.queue.Add(message); // add to the queue again }); return transaction; })); }
public Task<IMessageTransaction> Receive(TimeSpan? timeout = null) { return Task.Factory.StartNew(() => { LocalMessage message; if (!this.queue.TryTake(out message, timeout ?? TimeSpan.FromSeconds(60))) { return null; } IMessageTransaction transaction = new LocalMessageTransaction( message, () => { }, // nothing to do on commit () => { message.Failed(); // notify failure, increases retry count this.queue.Add(message); // add to the queue again }); return transaction; }); }