程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2EE >> JMS消息類型

JMS消息類型

編輯:J2EE
在JMS1.1規范中規定了5種JMS消息類型,這篇文章給出如何創建和解包每種消息類型的片段代碼。 1.創建一個TextMessage 這個例子裡,股票報價信息被發送成一個TextMessage類型的消息,消息中搭載了一個可以被客戶端讀取的字符串數 據,下面的代碼示范了如何去創建一個這樣的消息:

String stockData; /* 股票信息是一個字符串 */
TextMessage message;
message = session.createTextMessage();
/* 設置股票信息到消息體 */
message.setText(stockData);
2.解包一個TextMessage 去解包一個TextMessage類型的消息,客戶端可以使用Message.getText方法:

String stockInfo; 
stockInfo = message.getText();
3.創建一個BytesMessage 股票信息可能是一個服務器端知道如何去構建、客戶端知道如何去解釋的二進制格式的股票報價,象這樣的消息可以 這樣被構造:

byte[] stockData; /* 股票信息是一個字節數組 */
BytesMessage message;
message = session.createBytesMessage();
message.writeBytes(stockData);
4.解包一個BytesMessage 當接收到一個ByteMessage時,可以使用下面的方式來解包:

byte[] stockInfo; 
int length;
length = message.readBytes(stockData);
消息體被拷貝到字節數組,客戶端程序可以讀取這個樹組來解釋數據。 5.創建一個MapMessage 每種股票信息可能會包括多種(name/value)成對出現的map,可以使用MapMessage,例如它包括下面的信息: • 股票名 - a String • 當前值 - a double • 時間 - a long • 最後更改 - a double • 股票信息 - a String 去構造這個MapMessage,客戶端可以使用MapMessage的各種set方法(setString, setLong, and so forth)去關聯相關 信息。

String stockName; /* 股票名 */
double stockValue; /* 當前值 */
long stockTime; /* 時間 */
double stockDiff; /* 最後更改*/
String stockInfo; /* 股票信息 */
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.解包一個MapMessage 去解包一個MapMessage,客戶端程序可以使用MapMessage的各種get方法來得到MapMessage元素名對應的值,下面給出 了這一個示例:

String stockName; /* 股票名 */
double stockValue; /* 當前值 */
long stockTime; /* 時間 */
double stockDiff; /* 最後更改*/
String stockInfo; /* 股票信息 */

stockName = message.getString("Name");
stockDiff = message.getDouble("Diff");
stockValue = message.getDouble("Value");
stockTime = message.getLong("Time");
如果你想得到整個元素的列表,可以使用MapMessage.getMapNames方法來獲得。 7.創建一個StreamMessage 和MapMessage相似,一個應用程序可以按序列發送多個字段到一個消息中,這些字段都是原始類型的,要做這些,你 可以使用一個StreamMessage,在這裡可以將Java原始類型分配給股票報價信息的每一個條目中: • 股票名 - a String • 當前值 - a double • 時間 - a long • 最後更改 - a double • 股票信息 - a String

String stockName; /* 股票名 */
double stockValue; /* 當前值 */
long stockTime; /* 時間 */
double stockDiff; /* 最後更改*/
String stockInfo; /* 股票信息 */
StreamMessage message;

message = session.createStreamMessage();
下面的元素將被按順序寫到StreamMessage,注意他們沒有象在MapMessage中的命名

message.writeString(stockName);
message.writeDouble(stockValue);
message.writeLong(stockTime);
message.writeDouble(stockDiff);
message.writeString(stockInfo);
8.解包一個StreamMessage StreamMessage中的元素必須按照被寫入的順序讀出:

String stockName; /* 股票名 */
double stockValue; /* 當前值 */
long stockTime; /* 時間 */
double stockDiff; /* 最後更改*/
String stockInfo; /* 股票信息 */

stockName = message.readString();
stockValue = message.readDouble();
stockTime = message.readLong();
stockDiff = message.readDouble();
stockInfo = message.readString();
9.創建一個ObjectMessage 被發送出的股票的信息可能來源於一個指定的StockObject Java對象,這個對象可以在一個ObjectMessage裡作為消息 體被發出。ObjectMessage被用來發送Java對象。 這些值的設置方法由StockObject執行。例如,StockObject可以有一些設置各種數據值的方法,一個使用StockObject 的應用看起來象這樣:

String stockName; /* 股票名 */
double stockValue; /* 當前值 */
long stockTime; /* 時間 */
double stockDiff; /* 最後更改*/
String stockInfo; /* 股票信息 */

StockObject stockObject = new StockObject();
stockObject.setName(stockName);
stockObject.setValue(stockValue);
stockObject.setTime(stockTime);
stockObject.setDiff(stockDiff);
stockObject.setInfo(stockInfo);

ObjectMessage message;
message = session.createObjectMessage();
message.setObject(stockObject);
10.解包ObjectMessage 去解包ObjectMessage,使用ObjectMessage.getObject得到對象,一但對象被取出來,客戶端程序使用Java造型語句將 對象還原成原始對象。

StockObject stockObject;

stockObject = (StockObject)message.getObject();

String stockName; /* 股票名 */
double stockValue; /* 當前值 */
long stockTime; /* 時間 */
double stockDiff; /* 最後更改*/
String stockInfo; /* 股票信息 */

stockName = stockObject.getName();
stockValue = stockObject.getValue();
stockTime = stockObject.getTime();
stockDiff = stockObject.getDiff();
stockInfo = stockObject.getInfo();
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved