E' richiesta un'elaborazione aggiuntiva per gestire il payload ObjectMessage poiché il payload ObjectMessage JMS è un oggetto Java serializzato.
Il nodo
JMSInput ottiene il payload se viene richiamato getObject( ) nel messaggio. getObject( ) restituisce un oggetto deserializzato della classe originale. E' necessario rendere disponibile tale definizione di classe per il nodo JMSInput ed è necessario accertarsi che sia accessibile mediante il percorso della classe Java del broker. Il percorso classe viene definito
nel file batch mqsiprofile, che si trova nella directory di eseguibili del broker; ad esempio in
Windows, è mqsiprofile.cmd nella
directory install_dir/bin.
Il nodo JMSInput richiama il programma di analisi BLOB, mediante il quale viene creato
il contenuto del messaggio utilizzando un flusso di bit creato dall'oggetto.
E' possibile quindi serializzare nuovamente l'oggetto Java in un nodo JavaCompute o in un'estensione definita dall'utente e aggiornarlo mediante le chiamate di metodo.
E' possibile estrarre il payload per MapMessage e StreamMessage solo come singoli elementi ed è necessario formattarlo nuovamente mediante il nodo JMSInput prima di poterlo utilizzare per creare il contenuto del messaggio.
Il dominio JMSMap è un sinonimo del programma di analisi XML del broker, per cui è previsto un flusso di dati XML. I dati del payload MapMessage vengono tuttavia estratti come serie di coppie nome-valore dall'oggetto del messaggio. L'API JMS viene utilizzata per ottenere le coppie nome-valore.
Mediante il nodo JMSInput ciascuna coppia nome-valore viene accodata al flusso di bit come valore ed elemento XML e mantiene il tipo del valore utilizzando l'attributo dt=.
<map> <Item_8_of_10_Char dt='char'>A</Item_8_of_10_Char> <Item_5_of_10_Double dt='r8'>999999.0</Item_5_of_10_Double> <Item_10_of_10_String>Last Map Item</Item_10_of_10_String> <Item_9_of_10_Boolean dt='boolean'>0</Item_9_of_10_Boolean> <Item_2_of_10_Integrer dt='i4'>999</Item_2_of_10_Integrer> <Item_3_of_10_Short dt='i2'>9999</Item_3_of_10_Short> <Item_7_of_10_Byte dt='i1'>9</Item_7_of_10_Byte> <Item_6_of_10_Float dt='r4'>2.24</Item_6_of_10_Float> <Item_1_of_10_String>P2P Map Msg Number:1</Item_1_of_10_String> <Item_4_of_10_Long dt='i8'>99999</Item_4_of_10_Long> </map>In questo esempio il messaggio contiene 10 campi. I nomi del campo sono stati creati da un'applicazione client JMS e hanno il formato item_n_of_x_t, dove:
I dati del payload StreamMessage costituiscono una sequenza di campi, dove ciascun campo dispone di un tipo specifico. I campi non dispongono di nomi associati e, per creare elementi XML, viene utilizzato il nome elemento predefinito elt. In modo analogo a MapMessage, l'API JMS consente di richiamare solo singoli campi. Il nodo JMSInput estrae campi dal messaggio JMS e accoda ciascuno di essi ad un flusso di bit in formato XML.
<stream> <elt>Messaggio del flusso P2P Numero :7</elt> <elt dt='i4'>999</elt> <elt dt='i2'>9999</elt> <elt dt='i8'>99999</elt> <elt dt='r8'>999999.0</elt> <elt dt='r4'>2.24</elt> <elt dt='i1'>9</elt> <elt dt='char'>A</elt> <elt dt='boolean'>0</elt> <elt>Ultima voce del flusso</elt> </stream>In questo esempio, 10 valori con tipo vengono aggiunti al payload StreamMessage dall'applicazione client JMS.