涉及網絡傳輸的應用。序列化不可避免。
發送端以某種規則將消息轉成byte數組進行發送。
接收端則以約定的規則進行byte[]數組的解析。
序列化的選擇能夠是jdk序列化,hessian,jackson,protobuf等。
當中jdk序列化的缺點是性能及要求發送方與接收方都是java應用。
hessia。protobuf等都是基於壓縮反復字段的思想。降低數據傳輸量以提高性能。
jackson是以json表示來數據傳輸。性能優於jdk序列化。
RabbitMq的序列化是指Message的body屬性,即我們真正須要傳輸的內容。
RabbitMq抽象出一個MessageConvert接口處理消息的序列化,事實上現有SimpleMessageConverter,Jackson2JsonMessageConverter等。
當中默認的序列化類為SimpleMessageConverter。
僅僅有調用了convertAndSend方法才會使用對應的MessageConvert進行消息的序列化與反序列化。
SimpleMessageConverter對於要發送的消息體body為字節數組時。不進行處理。
對於假設是String。則將String轉成字節數組。
對於假設是Java對象,則使用jdk序列化將消息轉成字節數組。轉出來的結果較大,含class類名。類對應方法等信息。因此性能較差。
當使用RabbitMq作為中間件時,數據量比較大,此時就要考慮使用類似Jackson2JsonMessageConverter。hessian等序列化形式。以此提高性能。