在JMS1.1規(guī)范中規(guī)定了5種JMS消息類型,分別如下:
1.創(chuàng)建一個(gè)TextMessage
TextMessage message;
message = session.createTextMessage();
2.解包一個(gè)TextMessage
去解包一個(gè)TextMessage類型的消息,客戶端可以使用Message.getText方法:
String stockInfo;
stockInfo = message.getText();
3.創(chuàng)建一個(gè)BytesMessage
byte[] stockData;
BytesMessage message;
message = session.createBytesMessage();
message.writeBytes(stockData);
4.解包一個(gè)BytesMessage
當(dāng)接收到一個(gè)ByteMessage時(shí),可以使用下面的方式來解包:
byte[] stockInfo;
int length;
length = message.readBytes(stockData);
消息體被拷貝到字節(jié)數(shù)組,客戶端程序可以讀取這個(gè)樹組來解釋數(shù)據(jù)。
5.創(chuàng)建一個(gè)MapMessage
MapMessage message;
message = session.createMapMessage();
...其他代碼
message.setString("Name", "CN-Java");
message.setDouble("Value", stockValue);
message.setLong("Time", stockTime);
message.setDouble("Diff", stockDiff);
message.setString("Info", "Recent server announcement causes market interest");
6.解包一個(gè)MapMessage
stockName = message.getString("Name");
stockDiff = message.getDouble("Diff");
stockValue = message.getDouble("Value");
stockTime = message.getLong("Time");
如果你想得到整個(gè)元素的列表,可以使用MapMessage.getMapNames方法來獲得。
7.創(chuàng)建一個(gè)StreamMessage
和MapMessage相似,一個(gè)應(yīng)用程序可以按序列發(fā)送多個(gè)字段到一個(gè)消息中,這些字段都是原始類型的,要做這些,你可以使用一個(gè)StreamMessage,
message.writeString(stockName);
message.writeDouble(stockValue);
message.writeLong(stockTime);
message.writeDouble(stockDiff);
message.writeString(stockInfo);
8.解包一個(gè)StreamMessage
StreamMessage中的元素必須按照被寫入的順序讀出:
stockName = message.readString();
stockValue = message.readDouble();
stockTime = message.readLong();
stockDiff = message.readDouble();
stockInfo = message.readString();
9.創(chuàng)建一個(gè)ObjectMessage
ObjectMessage message;
message = session.createObjectMessage();
message.setObject(stockObject);
10.解包ObjectMessage
去解包ObjectMessage,使用ObjectMessage.getObject得到對象,一但對象被取出來,客戶端程序使用Java造型語句將對象還原成原始對象。
StockObject stockObject;
stockObject = (StockObject)message.getObject();