String stockData = "..."; // 股票資訊字串
TextMessage message = session.createTextMessage();
message.setText(stockData);
producer.send(message);
String stockInfo = message.getText();
byte[] stockData = ...; // 伺服器知曉編碼、客戶端知曉解碼
BytesMessage message = session.createBytesMessage();
message.writeBytes(stockData);
producer.send(message);
byte[] stockInfo = new byte[1024];
int length = message.readBytes(stockInfo);
// 客戶端依協定解析 byte 陣列
MapMessage 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");
producer.send(message);
String stockName = message.getString("Name");
double stockValue = message.getDouble("Value");
long stockTime = message.getLong("Time");
double stockDiff = message.getDouble("Diff");
String stockInfo = message.getString("Info");
// 取得所有鍵名:message.getMapNames()
StreamMessage message = session.createStreamMessage();
message.writeString(stockName);
message.writeDouble(stockValue);
message.writeLong(stockTime);
message.writeDouble(stockDiff);
message.writeString(stockInfo);
producer.send(message);
String stockName = message.readString();
double stockValue = message.readDouble();
long stockTime = message.readLong();
double stockDiff = message.readDouble();
String stockInfo = message.readString();
StockObject stockObject = new StockObject();
stockObject.setName(stockName);
stockObject.setValue(stockValue);
stockObject.setTime(stockTime);
stockObject.setDiff(stockDiff);
stockObject.setInfo(stockInfo);
ObjectMessage message = session.createObjectMessage();
message.setObject(stockObject);
producer.send(message);
StockObject stockObject = (StockObject) message.getObject();
String stockName = stockObject.getName();
double stockValue = stockObject.getValue();
long stockTime = stockObject.getTime();
double stockDiff = stockObject.getDiff();
String stockInfo = stockObject.getInfo();
注意:接收端需有相同類別定義,且類別必須實作 Serializable。
| 類型 | 適用場景 |
|---|---|
| TextMessage | 簡單文字、XML、JSON 等字串資料 |
| BytesMessage | 自定義二進制協定、壓縮資料、加密資料 |
| MapMessage | 欄位明確、名值對存取、需隨機存取欄位 |
| StreamMessage | 大量連續原始型別、順序讀寫、效能敏感 |
| ObjectMessage | 複雜物件圖、直接傳送領域模型 |