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.
|