ActiveMQ MapMessage

Hiram Chirino, Logo for Apache ActiveMQ, http:...

Hiram Chirino, Logo for Apache ActiveMQ, http://activemq.apache.org/ Released under the Apache Software License 2.0 (Photo credit: Wikipedia)

In molti esempi di ActiveMQ si fa riferimento sempre ad uno scambio di messaggi piuttosto semplice, come ad esempio stringhe.

Se c’è bisogno di scambiare strutture più complesse ci sono vari tipi di messaggi, a me è piaciuto molto il MapMessage.

Il MapMessage non è altro che una mappa di Chiave-Valore dove ogni attributo può essere tipizzato.
Ad esempio:

mymap.setString("name","Gabriele");
mymap.setint("foo",3);

Questo approccio  è molto utile perché evita la scrittura di un protocollo all’interno dei messaggi, inoltre garantisce  l’indipendenza ai moduli interessati.

Ad Esempio:
Client c#

MyMapMessage.SetString("name", "gabriele");
MyMapMessage.SetString("surname","Santomaggio");
producer.Send(MyMapMessage);


Server Java:
public void onMessage(Message message) {
string name = ((MapMessage)message).getString("name");
string Surname = ((MapMessage)message).getString("surname");
}

Se varia della mappa del client, ad esempio:

MyMapMessage.SetString("name", "gabriele");
MyMapMessage.SetString("surname","Santomaggio");
MyMapMessage.Setint("newfield",55);

Il  server può non essere aggiornato, perché nel peggiore dei casi non gestisce il nuovo campo “newfield”.
Questo dettaglio è molto importante in presenza di un numero elevato di moduli e di server, oltre a  garantire  un forte disaccoppiamento tra i moduli ed una certa tranquillità in fase di aggiornamento, che non guasta :))!!!.

La mappa mette a disposizione una serie di tipi primitivi es: String , double, short, ecc che risolvono  problemi legati alla conversione di tipi tra diversi linguaggi di programmazione.

Lascia un commento