| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/07/2009 08:08:29
|
Sefo
JavaChild
![[Avatar]](/images/avatar/359499f804ea7988921bf86c9377fb95.jpg)
Membro desde: 18/08/2006 10:02:28
Mensagens: 102
Offline
|
Bom dia,
estou com duvidas em relação a alguns conceitos envolvendo itens acima.
Se eu tenho uma fila configurada e um MDB escutando essa fila, então para cada mensagem que chegar a esta fila, uma instancia deste MDB será carregada da pool para executar esta mensagem, isto configura um cenário de paralelismo, certo? Ao menos eu penso que sim, porque ainda que uma mensagem esteja sendo processado por um MDB, se chegar outra na fila um outro MDB processará essa mensagem.
Só que pesquisando em outros sites eu vejo isto:
"JMS supports parallel-message processing with ConnectionConsumers that manage ServerSessionPools".
Ainda na API:
"A ConnectionConsumer implemented by a JMS provider uses a ServerSession to process one or more messages that have arrived. It does this by getting a ServerSession from the ConnectionConsumer's ServerSessionPool; getting the ServerSession's JMS session; loading it with the messages; and then starting the ServerSession."
Não entendi bem o próposito disso. No cenário onde não há ConnectionConsumer, as mensagens não são executadas em paralelo? Pra que servem estes ServerSession?
"For application servers, Connection objects provide a special facility for creating a ConnectionConsumer (optional). The messages it is to consume are specified by a Destination and a message selector. In addition, a ConnectionConsumer must be given a ServerSessionPool to use for processing its messages"
Uma pool de ServerSession para processar as mensagens. Mas quem processas essas mensagens não são instancias do meu MDB?
Grato por qualquer esclarecimento destes conceitos.
This message was edited 1 time. Last update was at 16/07/2009 08:14:54
|
NY GIANTS!!!!
WAR BIG BLUES!!!!
 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/07/2009 11:34:51
|
alevi
JavaChild
![[Avatar]](/images/avatar/77d13a096e771552d84d4af5f8ba7980.jpg)
Membro desde: 27/01/2007 13:58:04
Mensagens: 145
Offline
|
Olá!
Achei interessante a dúvida levantada por você.
Não sou especialista em MDBs, mas até onde sei (e aí, se alguém mais experiente puder ajudar) os MDBs se comportam como os EJBs stateless, ou seja, você terá uma instância do seu MDB tratando toda a messageria. Como só o conteiner poderá decidir se mais de uma instância será necessária (e de acordo com suas anotações), acredito que o paralelismo somente ocorrerá se você configurar o pool para fornecer mais de uma instância do seu MDB.
Neste caso, se você configurar o container para apenas uma instância do MDB, não haverá paralelismo na messageria.
Só não sei se o container faz algum controle de qual mensagem será tratada primeiro, no caso de mais de uma instância do MDB...
Alguém mais se habilita?
Abraços!!!
|
http://www.walkersystems.com.br
SCJP |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/07/2009 15:15:25
|
Rubem Azenha
GUJ Master
![[Avatar]](/images/avatar/cb953f6ca5923f7517125db46ed1293d.jpg)
Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline
|
Pense no MDB como um simples consumer da sua fila JMS. Você pode configurar o seu consumer para processar uma mensagem por vez ou para processar no máximo N mensagens por vez.
|
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/07/2009 15:57:45
|
Sefo
JavaChild
![[Avatar]](/images/avatar/359499f804ea7988921bf86c9377fb95.jpg)
Membro desde: 18/08/2006 10:02:28
Mensagens: 102
Offline
|
desculpe,
mas ainda não está muito claro pra mim.
Uma instancia do MDB processará apenas uma mensagem. Correto né?
Varias instancias do MDB poderão estar executando varias mensagens. Certo?
Se as duas afirmações estão corretas, este cenário caracteriza paralelismo no processamento.
E o que dizer sobre ConnectionConsumers e a afirmação abaixo:
"JMS supports parallel-message processing with ConnectionConsumers that manage ServerSessionPools". ?????
|
NY GIANTS!!!!
WAR BIG BLUES!!!!
 |
|
|
 |
|
|