Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }