protected async Task <bool> AskMessage(string queueName, IConnection connection) { using (var channel = connection.CreateModel()) { var res = channel.BasicGet(queueName, false); if (res != null) { var message = _msgProvider.ExtractObject(Encoding.UTF8.GetString(res.Body.ToArray())); Exception exp = null; try { await Subscribe(message); } catch (Exception ex) { exp = ex; } finally { channel.BasicAck(res.DeliveryTag, false); } if (exp != null) { throw new QueueWatcherException($"bgTeam: {exp.Message}", message, exp); } return(true); } } return(false); }
protected async Task DispatchRoutine(string queueName) { var message = _queueProvider.AskMessage(queueName); if (message != null) { var entity = _messageProvider.ExtractObject(message.Body); await OnSubscribe(entity); _queueProvider.DeleteMessage(message); } else { _logger.Info("No messages"); await Task.Delay(_threadSleep); } }