public void Consumer(LiveBookApiClient client) { using var connection = factory.CreateConnection(); using (var channel = connection.CreateModel()) { var consumer = new EventingBasicConsumer(channel); consumer.Received += (model, ea) => { var body = ea.Body.ToArray(); var message = Encoding.UTF8.GetString(body); var messg = JsonConvert.DeserializeObject <QueueMessage>(message); try { var paragraph = client.Unlock(messg.ShortName, messg.ParagraphId); Console.WriteLine($"Processing Consumer {messg.ShortName} -- {messg.ParagraphId}"); SaveFileAsync(messg.OutputPath, paragraph); } catch (Exception ex) { Console.WriteLine($"Error ex"); throw ex; } }; channel.BasicConsume(queue: queueName, autoAck: true, consumer: consumer); } }
public async Task <string> HandleUnlock(string shortName, string paragraphId, string outPath) { Console.WriteLine($"{Environment.MachineName} - {shortName} - {paragraphId} "); //use message queue if (_rabbitmqHandler != null) { var message = JsonConvert.SerializeObject(new QueueMessage { ShortName = shortName, ParagraphId = int.Parse(paragraphId), OutputPath = outPath }); _rabbitmqHandler.Publish(message); } //use the single thread var paragraph = _client.Unlock(shortName, int.Parse(paragraphId)); await SaveFileAsync(outPath, paragraph); return(paragraph); }