descadastro
site NCE
 
 
J2EE
 
artigos publicados

Java Message Service (JMS) - Continuação

 

Austeclynio Pereira
Pesquisador, NCE/UFRJ
, M.Sc.

     
 


5. Exemplo de uma aplicação point-to-point

Neste exemplo será utilizado o modelo de envio e recepção de mensagens point-to-point. Uma mensagem “Entendendo o JMS” será produzida, destinada para uma fila denominada MinhaFila e enviada para o JMS provider.

Enviando a mensagem:

// obtendo um connection factory para o modelo point-to-point com o JMS provider da Sun

QueueConnectionFactory minhaConnectionFactory = new
com.sun.messaging.QueueConnectionFactory();

// utilizando myConnectionFactory para capturar uma queue connection

QueueConnection minhaConnection = minhaConnectionFactory.createQueueConnection();

// utilizando minhaConnection para criar uma queue session

QueueSession minhaSession = minhaConnection.createQueueSession(false, AUTO_ACKNOWLEDGE);

// criando uma fila de denominada MinhaFila
Queue minhaQueue = minhaSession.createQueue(“MinhaFila”);

// utilizando minhaSession para criar o producer
QueueSender meuSender = minhaSession.createSender(minhaQueue);

// iniciando a conexão
minhaConnection.start();

// enviando a mensagem “Entendendo o JMS”
TextMessage mensagem = minhaSession.createTextMessage();
mensagem.setText(“Entendendo o JMS”);
meuSender.send(mensagem);

//fechando as conexões
minhaSession.close();
minhaConnection.close();

Recebendo a mensagem: o código da aplicação consumidora é bastante semelhante ao código da aplicação produtora, essencialmente, a diferença é que desta vez é criado um receiver e não um producer.

// obtendo um connection factory para o modelo point-to-point com o JMS provider da Sun

QueueConnectionFactory minhaConnectionFactory = new
com.sun.messaging.QueueConnectionFactory();

// utilizando myConnectionFactory para capturar uma queue connection

QueueConnection minhaConnection = minhaConnectionFactory.createQueueConnection();

// utilizando minhaConnection para criar uma queue session
QueueSession minhaSession = minhaConnection.createQueueSession(false, AUTO_ACKNOWLEDGE);

// criando uma fila de denominada MinhaFila
Queue minhaQueue = minhaSession.createQueue(“MinhaFila”);

// utilizando minhaSession para criar o receiver
QueueReceiver meuReceiver = minhaSession.createReceiver(minhaQueue);

// iniciando a conexão
minhaConnection.start();

// recebendo a mensagem
TextMessage mensagem = (TextMessage)meuReceiver.receive();

// apresentando a mensagem
System.out.println(“Recebida a mensagem “ + mensagem.getText());

//fechando as conexões
minhaSession.close();
minhaConnection.close();

 

6. Exemplo de uma aplicação publish-and-subscribe

A seguir é apresentado um exemplo de uma aplicação que utiliza o modelo publish-and-subscribe. Como será visto são poucas as diferenças para o modelo point-to-point. O propósito deste exemplo também é produzir a mensagem “Entendendo o JMS”.

Enviando a mensagem:

// obtendo um connection factory para o modelo publish-and-subscriber com o JMS provider
//da Sun

TopicConnectionFactory minhaConnectionFactory = new
com.sun.messaging.TopicConnectionFactory();

// utilizando myConnectionFactory para capturar uma topic connection
TopicConnection minhaConnection = minhaConnectionFactory.createTopicConnection();

// utilizando minhaConnection para criar uma topic session

TopicSession minhaSession = minhaConnection.createTopicSession(false, AUTO_ACKNOWLEDGE);

// criando um tópico denominado MeuTopic
Topic meuTopic = minhaSession.createTopic(“MeuTopic”);

// utilizando minhaSession para criar o publisher
TopicPublisher meuPublisher = minhaSession.createPublisher(meuTopic);

// iniciando a conexão
minhaConnection.start();

// publicando a mensagem “Entendendo o JMS”
TextMessage mensagem = minhaSession.createTextMessage();
mensagem.setText(“Entendendo o JMS”);
meuPublisher.publish(mensagem);

//fechando as conexões
minhaSession.close();
minhaConnection.close();


Recebendo a mensagem: o código do subscriber também é bastante semelhante ao do publisher.


// obtendo um connection factory para o modelo publish-and-subscriber com o JMS provider
// da Sun
TopicConnectionFactory minhaConnectionFactory = new
com.sun.messaging.TopicConnectionFactory();

// utilizando myConnectionFactory para capturar uma topic connection

TopicConnection minhaConnection = minhaConnectionFactory.createTopicConnection();

// utilizando minhaConnection para criar uma topic session
TopicSession minhaSession = minhaConnection.createTopicSession(false, AUTO_ACKNOWLEDGE);

// criando um tópico denominado MeuTopic
Topic meuTopic = minhaSession.createTopic(“MeuTopic”);

// utilizando minhaSession para criar o producer
TopicSubscriber meuSubscriber = minhaSession.createSubscriber(meuTopic);

// iniciando a conexão
minhaConnection.start();

// publicando a mensagem “Entendendo o JMS”
TextMessage mensagem = (TextMessage)meuSubscriber.receive();

// apresentando a mensagem
System.out.println(“Recebida a mensagem “ + mensagem.getText());

//fechando as conexões
minhaSession.close();
minhaConnection.close();


Vários sistemas estão sendo desenvolvidos explorando as facilidades oferecidas pelo JMS, uma tendência natural em virtude do crescimento do número de corporações que necessitam intercambiar informações entre seus negócios.



Bibliografia

[1] Sun MicroSystems, Inc. “Java Remote Method Invocation Specification”, maio de 1996.

[2] Pitt E., McNiff K., McNiff K., “The Remote Method Invocation Guide”, Addison-Wesley, 2001.

[3] Downing T., “Java RMI”, IDG Books, 1998.

[4] “http://docs.sun.com/source/817-6026/overview.html”, setembro de 2005.

[5] “http://java.sun.com/jsp_utils/”, junho de 2005.

[6] Hapner M., Burridge R., Sharma R., Fialli J., Stout K., “ Java Message Service”, Sun McroSystems, abril de 2002.

[7] Goetz B., “Should you use JMS in your next enterprise application ?”, artigo,
www-128.ibm.com/developerworks/java/library/, fevereiro de 2002.

 
 
         
 
    página principal
 
Núcleo de Computação Eletrônica
Universidade Federal do Rio de Janeiro
Prédio do Centro de Ciências Matemáticas e da Natureza Bloco C
Caixa Postal: 2324 - CEP: 20.010-974
Cidade Universitária - Ilha do Fundão, Rio de Janeiro - RJ Tel: 2598-3333