首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2EE

JMS 1.1 五大訊息類型完整指南:建立、發送與解碼實戰

     編輯:J2EE

JMS 1.1 規範五種訊息類型

  1. TextMessage - 文字訊息
  2. BytesMessage - 位元組陣列訊息
  3. MapMessage - 名值對映射訊息
  4. StreamMessage - 原始型別串流訊息
  5. ObjectMessage - 序列化物件訊息

1. TextMessage:股票報價字串

建立與發送

String stockData = "..."; // 股票資訊字串
TextMessage message = session.createTextMessage();
message.setText(stockData);
producer.send(message);

接收與解碼

String stockInfo = message.getText();

2. BytesMessage:二進制格式股票報價

建立與發送

byte[] stockData = ...; // 伺服器知曉編碼、客戶端知曉解碼
BytesMessage message = session.createBytesMessage();
message.writeBytes(stockData);
producer.send(message);

接收與解碼

byte[] stockInfo = new byte[1024];
int length = message.readBytes(stockInfo);
// 客戶端依協定解析 byte 陣列

3. MapMessage:多欄位名值對(如股票明細)

建立與發送


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()

4. StreamMessage:依序寫入/讀取原始型別

建立與發送


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();

5. ObjectMessage:傳送 Java 物件

建立與發送


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複雜物件圖、直接傳送領域模型
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved