public async Task <PushResult> Push(QueueMessage message, MqClient sender) { ProcessingMessage = message; PushResult result = await ProcessMessage(message, sender); ProcessingMessage = null; await _queue.Trigger(); return(result); }
public async Task <PushResult> Push(QueueMessage message, MqClient sender) { //if we have an option maximum wait duration for message, set it after message joined to the queue. //time keeper will check this value and if message time is up, it will remove message from the queue. if (_queue.Options.MessageTimeout > TimeSpan.Zero) { message.Deadline = DateTime.UtcNow.Add(_queue.Options.MessageTimeout); } QueueMessage held = GetFirstMessageFromQueue(message); ProcessingMessage = held; PushResult result = await ProcessMessage(held); ProcessingMessage = null; await _queue.Trigger(); return(result); }
public async Task <PushResult> Push(QueueMessage message, MqClient sender) { QueueMessage held = GetFirstMessageFromQueue(message); ChannelClient cc = _queue.Channel.GetNextRRClient(ref _roundRobinIndex); if (cc == null) { _queue.AddMessage(held, false); return(PushResult.NoConsumers); } ProcessingMessage = held; PushResult result = await ProcessMessage(held, cc); ProcessingMessage = null; await _queue.Trigger(); return(result); }