/// <summary>
        /// Evenement declenché à la reception d'un message.
        /// </summary>
        /// <param name="source">Queue</param>
        /// <param name="asyncResult">Message</param>
        private void MyPeekCompleted(Object source, 
            ReceiveCompletedEventArgs asyncResult)
        {
            // Récupère la queue.
            MessageQueue mq = (MessageQueue)source;
            System.Diagnostics.Debug.WriteLine("(Info) Reception d'une demande de reservation");
            try
            {
                // Récupération du message.
                ProjetNet.Modele.ModeleReservation.ReservationHotelVol reservation = (ProjetNet.Modele.ModeleReservation.ReservationHotelVol) mq.EndPeek(asyncResult.AsyncResult).Body;

                WebServiceReservationSoap serviceReservationSOAP = new WebServiceReservationSoapClient();
                ReserverRequestBody requestBody = new ReserverRequestBody(new WebServiceReservation.ReservationHotelVol()
                    {
                        Client = new WebServiceReservation.Client() {
                            FirstName = reservation.Client.FirstName,
                            LastName = reservation.Client.LastName,
                            Mail = reservation.Client.Mail,
                            Phone = reservation.Client.Phone,
                            Address = reservation.Client.Address,
                            City = reservation.Client.City,
                            PostalCode = reservation.Client.PostalCode,
                            Country = reservation.Client.Country
                        },
                        Hotel = new WebServiceReservation.Hotel() {
                            Name = reservation.Hotel.Name,
                            Stars = reservation.Hotel.Stars,
                            Price = reservation.Hotel.Price,
                            City = reservation.Hotel.City,
                            Country = reservation.Hotel.Country
                        },
                        Vol = new WebServiceReservation.Vol() {
                            Name = reservation.Vol.Name,
                            From = reservation.Vol.From,
                            To = reservation.Vol.To,
                            Price = reservation.Vol.Price,
                            Category = reservation.Vol.Category
                        },
                        DateEnd = reservation.DateEnd,
                        DateStart = reservation.DateStart
                    });
                ReserverRequest reserverRequest = new ReserverRequest(requestBody);

                // appel du WS
                serviceReservationSOAP.Reserver(reserverRequest);

                System.Diagnostics.Debug.Write("(Info) Reservation reussie.");
            }
            catch(Exception e)
            {
                System.Diagnostics.Debug.WriteLine("(Erreur) Reservation echouée : ");
                System.Diagnostics.Debug.WriteLine(e.Message);
            }
            finally
            {
                // Relance l'attente d'un message.
                mq.BeginReceive();
            }
        }
Example #2
0
        private void btn_LectureMSMQ_Click(object sender, EventArgs e)
        {
            // ouverture de le file MSMQ
            MessageQueue MyMQ = new MessageQueue(@".\private$\reservation");
            // recup sans vider la file d'un message
            MyMQ.Formatter = new XmlMessageFormatter(new Type[] { typeof(ProjetNet.Modele.ModeleReservation.ReservationHotelVol) });

            System.Diagnostics.Debug.WriteLine("(Info) Reception d'une demande de reservation");
            try
            {
                var message = (ProjetNet.Modele.ModeleReservation.ReservationHotelVol)MyMQ.Peek().Body;

                System.Diagnostics.Debug.WriteLine("(Info) Test client: " + message.Client.LastName + "\n"
                    + message.Client.FirstName + "\n" + message.Client.Phone + "\n" + message.Client.Mail + "\n"
                    + message.Client.Address + "\n" + message.Client.PostalCode + "\n" + message.Client.City + "\n"
                    + message.Client.Country);
                System.Diagnostics.Debug.WriteLine("(Info) Test Hotel: " + message.Hotel.Name + "\n"
                    + message.Hotel.Stars + "\n" + message.Hotel.Price + "\n" + message.Hotel.City + "\n"
                    + message.Hotel.Country);
                System.Diagnostics.Debug.WriteLine("(Info) Test Vol: " + message.Vol.Name + "\n"
                    + message.Vol.Category + "\n" + message.Vol.Price + "\n" + message.Vol.From + "\n"
                    + message.Vol.To);

                WebServiceReservationSoap serviceReservationSOAP = new WebServiceReservationSoapClient();
                ReserverRequestBody requestBody = new ReserverRequestBody(new WebServiceReservation.ReservationHotelVol()
                {
                    Client = new WebServiceReservation.Client()
                    {
                        FirstName = message.Client.FirstName,
                        LastName = message.Client.LastName,
                        Mail = message.Client.Mail,
                        Phone = message.Client.Phone,
                        Address = message.Client.Address,
                        City = message.Client.City,
                        PostalCode = message.Client.PostalCode,
                        Country = message.Client.Country
                    },
                    Hotel = new WebServiceReservation.Hotel()
                    {
                        Name = message.Hotel.Name,
                        Stars = message.Hotel.Stars,
                        Price = message.Hotel.Price,
                        City = message.Hotel.City,
                        Country = message.Hotel.Country
                    },
                    Vol = new WebServiceReservation.Vol()
                    {
                        Name = message.Vol.Name,
                        From = message.Vol.From,
                        To = message.Vol.To,
                        Price = message.Vol.Price,
                        Category = message.Vol.Category
                    },
                    DateEnd = message.DateEnd,
                    DateStart = message.DateStart
                });
                ReserverRequest reserverRequest = new ReserverRequest(requestBody);

                // appel du WS
                serviceReservationSOAP.Reserver(reserverRequest);

                System.Diagnostics.Debug.Write("(Info) Reservation reussie.");
                // Cloture l'attente d'un message
                MyMQ.Receive();
                MyMQ.Close();
            }
            catch (Exception excep)
            {
                System.Diagnostics.Debug.WriteLine("(Erreur) Reservation echouée : ");
                System.Diagnostics.Debug.WriteLine(excep.Message);
            }
        }