public void CreateProducer(BankResponse bankResponse, string queue, string routingKey, string correlationId) { var connection = GetConnection.ConnectionGetter(); using var channel = connection.CreateModel(); channel.ExchangeDeclare(exchange: exchange, durable: true, type: ExchangeType.Direct); channel.QueueDeclare(queue: queue, durable: true, exclusive: false, autoDelete: false, arguments: null); channel.QueueBind(queue, exchange, routingKey); var message = JsonSerializer.Serialize(bankResponse); var body = Encoding.UTF8.GetBytes(message); var props = channel.CreateBasicProperties(); props.CorrelationId = correlationId; Console.WriteLine($"Sender til {queue}"); ShowData.DisplayData(bankResponse, correlationId); channel.BasicPublish(exchange: exchange, routingKey: routingKey, basicProperties: props, body: body); CloseConnection.CloseAll(channel, connection); }
private static void SendResponse(BankCustomer customer, string correlationId) { var bankResponse = new BankResponse() { FullName = customer.FullName, EmailAddress = customer.EmailAddress, Response = true }; var queue = EndPoints.FromBankQueueName; var routingKey = EndPoints.FromBankRoutingKey; var connection = GetConnection.ConnectionGetter(); using var channel = connection.CreateModel(); channel.ExchangeDeclare(exchange: exchangeName, durable: true, type: ExchangeType.Direct); channel.QueueDeclare(queue: queue, durable: true, exclusive: false, autoDelete: false, arguments: null); channel.QueueBind(queue, exchangeName, routingKey); Console.WriteLine("Besked sendt:"); Console.WriteLine("- - - - - - - - - - - - - - -"); Console.WriteLine($"Navn: {bankResponse.FullName}"); Console.WriteLine($"Email: {bankResponse.EmailAddress}"); Console.WriteLine($"CorrelationId: {correlationId}"); Console.WriteLine($"Svar fra banken: {(bankResponse.Response ? "Positivt" : "Negativt")}"); Console.WriteLine("------------------------------"); var message = JsonSerializer.Serialize(bankResponse); var body = Encoding.UTF8.GetBytes(message); var props = channel.CreateBasicProperties(); props.CorrelationId = correlationId; props.Persistent = true; channel.BasicPublish(exchange: exchangeName, routingKey: routingKey, basicProperties: props, body: body); CloseConnection.CloseAll(channel, connection); }
public void ConsumeFromQueue(string queueName, string exchangeName, string routingKey) { var connection = GetConnection.ConnectionGetter(); var channel = connection.CreateModel(); channel.ExchangeDeclare(exchangeName, ExchangeType.Direct, true); channel.QueueDeclare(queueName, true, false, false); channel.QueueBind(queueName, exchangeName, routingKey); var consumer = new EventingBasicConsumer(channel); consumer.Received += (sender, eventArgs) => { var bytes = eventArgs.Body.ToArray(); var body = Encoding.UTF8.GetString(bytes); var customer = JsonSerializer.Deserialize <Customer>(body); Console.WriteLine($"Besked modtaget fra {queueName}"); var correlationId = eventArgs.BasicProperties.CorrelationId; if (!string.IsNullOrEmpty(customer.CustomerId)) { ShowData.DisplayData(customer, correlationId); _redistributeMessages.SortMessages(customer, correlationId); } else { var bankResponse = JsonSerializer.Deserialize <BankResponse>(body); if (bankResponse.Response) { ShowData.DisplayData(bankResponse, correlationId); } else { ShowData.RejectedFunds(); } _redistributeMessages.MessagesFromBank(bankResponse, correlationId); } }; channel.BasicConsume(queueName, true, consumer); }
public static void ConsumeFromQueue(string queueName, string routingKey) { var connection = GetConnection.ConnectionGetter(); var channel = connection.CreateModel(); channel.ExchangeDeclare(exchangeName, ExchangeType.Direct, true); channel.QueueDeclare(queueName, true, false, false); channel.QueueBind(queueName, exchangeName, routingKey); var consumer = new EventingBasicConsumer(channel); List <string> corIds = new List <string>(); consumer.Received += (sender, eventArgs) => { var bytes = eventArgs.Body.ToArray(); var body = Encoding.UTF8.GetString(bytes); var customer = JsonSerializer.Deserialize <BankCustomer>(body); var corId = eventArgs.BasicProperties.CorrelationId; Console.WriteLine("Besked modtaget:"); Console.WriteLine("- - - - - - - - - - - - - - -"); Console.WriteLine($"Navn: {customer.FullName}"); Console.WriteLine($"Email: {customer.EmailAddress}"); Console.WriteLine($"CorrolationId: {corId}"); Console.WriteLine("------------------------------"); if (!corIds.Contains(corId)) { corIds.Add(corId); SendResponse(customer, corId); } }; var result = channel.BasicConsume(queueName, true, consumer); }
public void CreateProducer(Customer customer, string queue, string routingKey) { queue = EndPoints.WebsiteQueueName; routingKey = EndPoints.WebsiteRoutingKey; var connection = GetConnection.ConnectionGetter(); using var channel = connection.CreateModel(); channel.ExchangeDeclare(exchange: exchange, durable: true, type: ExchangeType.Direct); channel.QueueDeclare(queue: queue, durable: true, exclusive: false, autoDelete: false, arguments: null); channel.QueueBind(queue, exchange, routingKey); var message = JsonSerializer.Serialize(customer); var body = Encoding.UTF8.GetBytes(message); var props = channel.CreateBasicProperties(); props.CorrelationId = customer.CustomerId; props.Persistent = true; Console.WriteLine($"Sender til {queue}"); ShowData.DisplayData(customer, null); channel.BasicPublish(exchange: exchange, routingKey: routingKey, basicProperties: props, body: body); CloseConnection.CloseAll(channel, connection); }