public Encomenda(EncomendaWEBooks encomendaWEBooks) { IdEncomenda = encomendaWEBooks.IdEncomenda; _listaLivros = new Livro[encomendaWEBooks.ListaBook.Length]; int i = 0; foreach (Book book in encomendaWEBooks.ListaBook) { _listaLivros[i] = new Livro(); _listaLivros[i].ISBN = book.ISBN; _listaLivros[i].NomeFornecedor = book.Fornecedor; _listaLivros[i].PrecoVenda = book.PrecoVenda + ""; _listaLivros[i].Quantidade = book.Quantidade; _listaLivros[i].TempoEntrega = book.Disponibilidade; _listaLivros[i].Titulo = book.Titulo; i++; } //Encher os campos que nao veem da fila ValorTotal = 0.0; NomeCliente = "indisponivel"; Numero = "indisponivel"; Address = "indisponivel"; City = "indisponivel"; State = "indisponivel"; ZIPcode = "indisponivel"; Country = "indisponivel"; Estado = "indisponivel"; TempoEspera = 0; }
/// <summary> /// Thread que fica a escuta no fila de mensagens /// </summary> public void Receiver() { ComunicacaoFila comFila = new ComunicacaoFila(); while (true) { //Thread.Sleep(new TimeSpan(0,0,10)); System.Messaging.Message mensagem; try { mensagem = mqDist.Receive(new TimeSpan(0, 0, 3)); EncomendaWEBooks encomendaWEbooks = new EncomendaWEBooks((XmlDocument)mensagem.Body); //Envia para o log o tipo de mensagem que recebeu actualizaLog(encomendaWEbooks.TipoMensagem, true); if (encomendaWEbooks.TipoMensagem.ToLower() == "colocar") { WEBooksDistribuidorService servicoDistribuidor = new WEBooksDistribuidorService(); servicoDistribuidor.EncomendaWEBooks = encomendaWEbooks; WaitCallback EncomendaCallBack = new WaitCallback(servicoDistribuidor.TempoVidaEncomenda); ThreadPool.QueueUserWorkItem(EncomendaCallBack); actualizaLog(encomendaWEbooks.IdEncomenda, false); } else if (encomendaWEbooks.TipoMensagem.ToLower() == "cancelar") { WEBooksDistribuidorService servicoDistribuidor = new WEBooksDistribuidorService(); servicoDistribuidor.EncomendaWEBooks = encomendaWEbooks; WaitCallback CancelaCallBack = new WaitCallback(servicoDistribuidor.CancelaEncomenda); ThreadPool.QueueUserWorkItem(CancelaCallBack); } } catch { //nao faz nada, significa que nao existem mensagens na fila } } }
public void escreveFilaWeb(EncomendaWEBooks encomendaWEBooks) { System.Messaging.Message mes = new Message(); mes.Body = encomendaWEBooks.Encomenda2XmlDocument(); mqWeb.Send(mes); }