JMS – Uma implementação totalmente excelente =D

Ola, eeee ai, ôla, hello, oi.

Então povo, este novo post foi feito para complementar um que foi feito a vários, vários anos luz atrás, tentando mostrar o porque de utilizarmos JMS…
http://pedreirosdosoftware.wordpress.com/2012/07/12/jms-definicao-e-configuracao/

  • A primeira coisa que você terá que fazer, é dar uma olhada no post acima para relembrar as configurações, por que com toda a certeza você já esqueceu =D
  • Em segundo lugar, configure seu jboss uma nova fábrica que configurações para que possamos utiliza-la.
  • E em terceiro lugar, vamos definir uma fila com o nome “UselessChatQueue” e jndi        ”java:/UselessChatQueue”

Muito bem, muito bem, muito bom, muito bom…

O projeto a seguir foi feito utilizando JMS, JSF com primefaces e CDI. Também o IDE JBoss Developer Studio(é um eclipse com tudo configurado pra utilizar jboss isuhausihauuas) e JBoss AS 7…

E agora podemos começar definindo o ManagedBean “UselessChatBean”…

Então como podemos observar (nesse print horrível), conseguimos a referencia da nossa Queue e da nossa ConnectionFactory a partir do @Resource, referenciamos a sessão que serão armazenadas as informações e uma conexão para as mesmas, criamos listas para as mensagens recebidas e enviadas e um consumidor e produtor para a nossa mensagem a ser enviada pela Queue.

Definimos um layout, na imagem acima a parte que será responsável pelo envio da mensagem, e mostrar as mensagens que foram enviadas…

Logo em seguida, definimos uma segunda parte do layout, com o recebimento das mensagens sendo mostrado por um dataTable, o qual será atualizado por um poll.

Quando o comando de envio da mensagem for ativado, este método será executado, e assim, um produtor é criado pela sessão e um objeto (ObjectMessage obj); este objeto será o que conterá as informações que desejamos enviar, neste casso, uma instancia de “UselessMessage” será inserida no nosso obj e enviado. Nosso UselessMessage não passa de um VO por assim dizer, contendo a mensagem, e também quem a enviou.

Por ultimo, temos nossa mensagem sendo recebida e armazenada na lista de mensagens recebidas a partir de um listener… se vocês observarem eu deixei duas partes comentadas (não, não foi sem querer =D ) tanto na View, quanto em nosso Bean, o que está acontecendo no momento é que nossas mensagens estão sendo enviadas e imediamente lidas pelo consumidor, pois definimos um listener, mas se quisermos podemos criar um botão de recebimento e para cada mensagem enviada podemos somente receber a mensagem pelo consumidor (messageConsumer.receive()).

Coloquei também um tema do Primefaces para melhorar o visual, para isto basta você baixar o .jar do tema escolhido e colocar juntamente com as outras bibliotecas, também, colocar em seu web.xml as seguintes definições:

<context-param>
<param-name>primefaces.THEME</param-name>
<param-value>afterdark</param-value>
</context-param>

Afterdark foi o tema que eu escolhi, e ficou assim:

E qual o propósito de tudo isto?

Bom, esta aplicação não tem muitas vantagens, você começa observando pelo nome (Useless), mas vamos a alguns pontos:

  • Se separarmos emissor e receptor em diferentes aplicações teremos um envio assíncrono de mensagens, o que no caso da empresa a qual eu trabalho é muito utilizado para que transações possam ser efetuadas rapidamente.
  • A nossa mensagem não é perdida, ficará armazenada até quem alguém a consuma.
  • Também tentei demonstrar a diferença entre consumirmos automaticamente uma mensagem na fila ou que possamos fazer quando der vontade…iusahiushasiu.
  • E finalmente, espero que algum dos pontos acima, ajude a alguém em algum lugar nesta terra tão imensa.

Um grande abraço a todos e fiquem com Deus =D

” Bendiga ao Senhor a minha alma! Bendiga ao Senhor todo o meu ser!” Sl 103:1

Obs: Esperem um pouco e eu posto o código fonte =D

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>