private string nonBlockingRead(LoanBroker.model.LoanRequest loanRequest) { string returnString = "Could not send the message"; EventingBasicConsumer consumer; using (IModel channel = new ConnectionFactory() { HostName = Queues.RABBITMQ_HOSTNAME }.CreateConnection().CreateModel()) { channel.QueueDeclare(queue: Queues.LOANBROKER_OUT, durable: false, exclusive: false, autoDelete: false, arguments: null); consumer = new EventingBasicConsumer(channel); bool weDontHaveIt = true; consumer.Received += (model, ea) => { LoanBroker.model.LoanResponse loanResponse = JsonConvert.DeserializeObject <LoanBroker.model.LoanResponse>(Encoding.UTF8.GetString(ea.Body)); if (loanResponse.SSN == loanRequest.SSN) { weDontHaveIt = false; } else { // Return it to the queue channel.BasicReject(ea.DeliveryTag, true); } }; channel.BasicConsume(queue: Queues.LOANBROKER_OUT, noAck: true, consumer: consumer); while (weDontHaveIt) { System.Threading.Thread.Sleep(5); } } return(returnString); }
private static void ReceiveLogs() { IModel channel = new ConnectionFactory { HostName = "localhost" }.CreateConnection().CreateModel(); channel.QueueDeclare(QueueName, false, false, false, null); var consumer = new EventingBasicConsumer(channel); Task.Run(() => { consumer.Received += (model, ea) => { var body = ea.Body.ToArray(); var message = Encoding.UTF8.GetString(body); LogRepository.Instance().AddLog(message); Console.WriteLine(message); }; channel.BasicConsume(QueueName, true, consumer); }); }