コード例 #1
0
        public static SerializedResultDTO Receive()
        {
            SerializedResultDTO Result = null;
            var factory = new ConnectionFactory()
            {
                HostName = "localhost"
            };

            using (var connection = factory.CreateConnection())
                using (var channel = connection.CreateModel()) //deschide un canal de comunicare
                {
                    //creare coada, daca nu exist a deja
                    channel.QueueDeclare(queue: "result", //numele cozii, acelasi cu coada care pe care se transmite in sender
                                         durable: false,
                                         exclusive: false,
                                         autoDelete: false,
                                         arguments: null);

                    //creare obiect consumer care va primi mesajul de pe canalul de comunicare
                    var    consumer = new EventingBasicConsumer(channel);
                    String message  = ""; //declare string in care se va prelua mesajul
                                          // dupa ca va fi decodat

                    //ce sa se intample cand s-a primit mesajul
                    consumer.Received += (model, ea) =>
                    {
                        //ia mesajul si il trimite inapoi la MVC
                        var body = ea.Body;
                        message = Encoding.UTF8.GetString(body);
                        SerializedResultDTO res = JsonConvert.DeserializeObject <SerializedResultDTO>(message);
                        Result = res;
                    };
                    //Asteapta sa se primeasca mesajul
                    channel.BasicConsume(queue: "result",
                                         autoAck: true,
                                         consumer: consumer);

                    do
                    {
                        //asteapta sa se proceseze comanda apoi trimite raspunsul
                        if (Result != null)
                        {
                            //trimite rezultatul pe coada de raspuns
                            return(Result);
                        }
                    } while (Result == null);

                    return(Result);
                }
        }
コード例 #2
0
        //depunere
        public bool EfectueazaTranzactie(double sum, ContDTO source)
        {
            //compune o comanda si serializeaz-o
            String serializedCommand = new SerializedCommandDTO(sum, source).Serialize();

            //trimite comanda pe coada de comenzi. Procesatorul de comenzi va pune un rezultatt pe coada de rezultate
            CmdSender.Send(serializedCommand);
            //cere rezultatul
            SerializedResultDTO res = ResultReceiver.Receive(); //astepta raspunsul de pe coada de raspunsuri

            //modifica fisierele conform rezultatului comenzii
            _writeRepo.AdaugaTranzactie(res.tranzactii[0], res.conturi[0].iban);
            _writeRepo.ActualizareContInLista(source, res.conturi[0].Sold);
            return(true);
        }