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);
            }
        }
示例#2
0
        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);
        }