RabbitMq消息序列化簡述


涉及網絡傳輸的應用。序列化不可避免。

發送端以某種規則將消息轉成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等序列化形式。以此提高性能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM