4
我閱讀教程,RabbitMQ是消息代理,消息是一個字符串。 有什麼想法,消息被定義爲一個類或結構?所以我可以定義我的消息結構。使用rabbitmq發送消息不是字符串,但結構
我閱讀教程,RabbitMQ是消息代理,消息是一個字符串。 有什麼想法,消息被定義爲一個類或結構?所以我可以定義我的消息結構。使用rabbitmq發送消息不是字符串,但結構
消息以字節流形式發送,因此您可以將可串行化的任何對象轉換爲字節流併發送,然後在另一端反序列化它。
把這個消息對象,並把它當消息被髮布:
public byte[] toBytes() {
byte[]bytes;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try{
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(this);
oos.flush();
oos.reset();
bytes = baos.toByteArray();
oos.close();
baos.close();
} catch(IOException e){
bytes = new byte[] {};
Logger.getLogger("bsdlog").error("Unable to write to output stream",e);
}
return bytes;
}
把這個消息對象,並調用它,當消息被消耗:
public static Message fromBytes(byte[] body) {
Message obj = null;
try {
ByteArrayInputStream bis = new ByteArrayInputStream (body);
ObjectInputStream ois = new ObjectInputStream (bis);
obj = (Message)ois.readObject();
ois.close();
bis.close();
}
catch (IOException e) {
e.printStackTrace();
}
catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
return obj;
}
你可以實際上使用JSON.NET來輕鬆地將內容序列化或反序列化爲JSON。 – ashes999 2016-09-23 14:57:36