Código Fonte Projeto Fila de Mensagens: Clique aqui para Download
Nesse artigo, iremos construir uma aplicação de fila de mensagens. No exemplo que segue teremos: a classe para envio e recebimento, uma classe com a estrutura de dados que enviaremos e um Form chamando as rotinas criadas.
Inicialmente cheque se a fila de mensagens esta funcionando no services do windows, caso não exista o serviço você deve fazer a instalação. Siga as instruçoes no site do msdn http://msdn.microsoft.com/pt-br/library/19ww660c(v=vs.80).aspx (Installing Mensagem Queuing - Localizado bem no final da página)
Para utilizarmos a fila de mensagem primeiro devemos adicionar em nosso projeto a referencia "System.Messaging" e, fazer a chamada no using em nossa classe, assim como, utilizamos no exemplo da Classe ClassMessaging.
Para adicionar a referencia, devemos clicar com o botão direito do mouse na aba de projetos e clicar em Add Reference e selecionar a referencia que desejamos (Assim como figura abaixo) no caso a supracitada.

A classe ClassMessaging é responsavel por enviar e receber mensagem da Fila. Não irei explocar ponto a ponto os comandos da classe, irei fazer comentario diretamente no código, caso haja duvidas podem postar que retornarei.
using System; using System.Text; using System.Messaging; using DevDicas.Framework.Estrutura; namespace DevDicas.Framework.Mensagem { public class ClassMessaging { //Nome da Fila private String namef; public int globi; //Objeto que será enviado, no caso uma clase contendo uma estrutura de dados private Envio sentOrder; //Objeto da fila de mensagens private MessageQueue myQueue; public ClassMessaging() { } //Esse metódo será usado para criarmos nossa fila, sempre deverá ser usado antes do uso private void CreateSendQueue() { //No nosso exemplo criaremos o nome da fila a partir do nome da maquina namef = System.Environment.MachineName.ToString(); //Setamos o caminho que será gravado a fila namef = namef + "\\Private$\\tname"; //Verificamos se existe o arquivo de fila, caso exista apenas o utilizaremos senão criaremos uma nova fila if (!MessageQueue.Exists(namef)) { //Utilizamos a fila já existente myQueue = MessageQueue.Create(namef); } else { //Criamos uma nova fila myQueue = new MessageQueue(namef); } } //Metodo para envio da mensagem public Envio Send(Envio _envio) { this.CreateSendQueue(); myQueue.Send(_envio); } //Metodo para recebimento da mensagem public void Receive() { try { myQueue.Formatter = new XmlMessageFormatter(new Type[] { typeof(Envio) }); var message = (Envio)myQueue.Receive().Body; } catch (MessageQueueException e) { String x = e.ToString(); } catch (InvalidOperationException e) { String x = e.ToString(); } return message; } } }
Devemos criar também a clase contendo a estrutura de dados que será enviada, no caso a classe envio, utilizamos duas variaveis nessa estrutura ID e Nome, ambas string.
Nesse artigo, iremos construir uma aplicação de fila de mensagens. No exemplo que segue teremos: a classe para envio e recebimento, uma classe com a estrutura de dados que enviaremos e um Form chamando as rotinas criadas.
Inicialmente cheque se a fila de mensagens esta funcionando no services do windows, caso não exista o serviço você deve fazer a instalação. Siga as instruçoes no site do msdn http://msdn.microsoft.com/pt-br/library/19ww660c(v=vs.80).aspx (Installing Mensagem Queuing - Localizado bem no final da página)
Para utilizarmos a fila de mensagem primeiro devemos adicionar em nosso projeto a referencia "System.Messaging" e, fazer a chamada no using em nossa classe, assim como, utilizamos no exemplo da Classe ClassMessaging.
Para adicionar a referencia, devemos clicar com o botão direito do mouse na aba de projetos e clicar em Add Reference e selecionar a referencia que desejamos (Assim como figura abaixo) no caso a supracitada.

A classe ClassMessaging é responsavel por enviar e receber mensagem da Fila. Não irei explocar ponto a ponto os comandos da classe, irei fazer comentario diretamente no código, caso haja duvidas podem postar que retornarei.
using System; using System.Text; using System.Messaging; namespace DevDicas.Framework.Estrutura { public class Envio { public string Id; public string Nome; } }
Agora criaremos um WinForm como o abaixo contendo os botoes enviar e receber.

Temos que na Form criar uma variavel publica da classe ClassMessaging assim:
public ClassMessaging msg = new ClassMessaging();
No evento clique do botão enviar deve conter o código:
using System; Envio _envio = new Envio; _envio.Id = TextId.Text; _envio.Nome = TextId.Text; msg.Send(_envio);
E no evento clique do botão receber deve conter o código:
using System; Envio recebimentoEnvio = msg.Receive(); TextId.Text = recebimentoEnvio.Id; TextId.Text = = recebimentoEnvio;
Pronto agora devemos apenas testar a nossa aplicacação clicando em enviar para enviar a mensagem das caixar de texto e depois em receber.
Espero que seja util e caso tenham problemas em desenvolvimento de outras aplicações podem enviar mensagem que terei prazer em excrever um artigo tirando as suas duvidas.
Nenhum comentário:
Postar um comentário