JMS - Message Passando ArrayList e String de uma vez

5 respostas
maquiavelbona

Bom dia a todos.

Estou com um problema meio sério. Tenho um sistema já implementado e funcionando com JMS e passando as mensagens com MapMessage normalmente, só que agora eu preciso que junto desse mapa seja enviado um ArrayList contendo certos valores e em outra classe seja recebido todos os valores separadamente.

Na documentação da API do J2EE, eu tenho como opções ou mandar um MapMessage com minhas informações mas só aceita ou tipos primitivos ou objetos wrappers como eles definem na documentação, “objetos primitivos objetivados”, ou um ObjectMessage, mas aí só consigo mandar um objeto por vez. Não posso simplesmente colocar as mensagens e o ArrayList em um outro objeto e mandar por ObjectMessage pois assim geraria muita mudança de código em outras classes que já estão funcionando perfeitamente.

As soluções mais viáveis seriam ou conseguir mandar um MapMessage e um ObjectMessage e o receptor conseguir pegar os dois valores ao mesmo tempo, ou construir um Message na qual possa receber ambos os valores.

Só que no primeiro caso não consegui nem sair do zero, no segundo caso, consegui entender com implementar Message mas tem certos métodos que não sei quais seriam os passos que seriam executados(em especial acknowledge(), todos os métodos que trabalham com o header da mensagem e todos os métodos que trabalham com o properties da mensagem).

Desculpe escrever uma carta mas eu acho que consegui colocar todos os pontos em que pensei e que acho que são úteis. Obrigado antecipadamente por qualquer colaboração.

5 Respostas

maquiavelbona

Nenhuma alma caridosa irá me ajudar? :frowning:

Luca

Olá

Não é de bom tom fazer isto.

Sobre sua tentativa de usar o que o JMS não permite em MapMessage…

Se você usa o ActimeMQ, há uma extensão que permite enviar Map ou List

Mas em todos os casos é possível transformar seu ArrayList em um array de bytes ou em uma String. Do outro lado, ao receber a mensagem, basta decodificar.

[]s
Luca

maquiavelbona

Desculpe, é que passaram-se mais de 3 dias e já estava sem esperança de resposta.

Aqui usa-se JORAM da ObjectWeb.

Então, eu já tinha feito isso que tu me sugeriste, colocar em uma array e passar dentro do MapMessage, só que não é o ideal, pois essa classe que eu desenvolvi recebe chamadas diferentes de vários outros códigos já feitos e funcionais com outras classes. O que era idealizado que todos esses códigos quando acessassem a minha classe, mandasse junto com o MapMessage, uma ArrayList com algumas URLs que deveriam ser trabalhadas, que já estão implementadas mas não funcionais. Mas como uma construção assim( passando argumentos vários por strings) não daria unidade nem padrão ao projeto(que prioriza uso de objetos complexos ao invés de argumentos aglomerados numa String). A minha intenção nunca foi inventar e sim tentar resolver da melhor maneira possível esse meu causo.

Obrigada pela ajuda Luca, e desculpe quaisquer coisas que possa a ter parecido minha ultima mensagem.

Até mais!

Luca

Olá

Acho que as mensagens devem ser o mais simples possível. E parece que esta também foi a idéia de quem criou a API. Talvez você tenha mesmo que modificar todo o código.

Se você quiser entender melhor a classe MapMessage do Joram veja o arquivo fonte em:
http://www.kickjava.com/src/org/objectweb/joram/client/jms/MapMessage.java.htm

[]s
Luca

maquiavelbona

Opa!

Vou dar uma analizada no código da Message e ver como poderia alterar para ver se posso mandar o que eu quero sem problemas.

Muitíssimo obrigado por ter me ajudado.

Abraços!
Marcos Iriarte

Criado 29 de junho de 2006
Ultima resposta 3 de jul. de 2006
Respostas 5
Participantes 2