rabbitmqjava
① activemq和rabbitmq誰更適合java學習
activemq更貼切java,想學習Java推薦選擇【達內教育】,該機構擁有行業內完善的教研團隊,強大的師資力量,確保學員利益,全方位保障學員學習。
學習JAVA需要注意的地方:
1、剛學習的時候要注意看相關的入門的書。對於這類書要自己研讀,也可以把書當作一個類庫來查閱。
2、在看書的同時也要多看看網上相關的視頻。主要看一位老師的視頻,跟著老師的思路和順序走。
3、在學習的過程中建立一個目標,讓自己能夠始終堅持不放棄。
4、學習的過程中會遇到很多的困難,會產生很多疑惑。不要急躁,不要放棄,想盡一切辦法去解決。
5、不能只看理論不去動手實踐。很多想不通的問題可以通過動手實踐去解決。感興趣的話點擊此處,免費學習一下
想了解更多有關Java培訓的相關信息,推薦咨詢【達內教育】。秉承「名師出高徒、高徒拿高薪」的教學理念,是達內公司確保教學質量的重要環節。作為美國上市職業教育公司,誠信經營,拒絕虛假宣傳是該機構集團的經營理念。該機構在學員報名之前完全公開所有授課講師的授課安排及背景資料,並與學員簽訂《指定授課講師承諾書》,確保學員利益。達內IT培訓機構,試聽名額限時搶購。
② rabbitmq的特點
可靠性 ∶RabbitMQ使用一些機制來保證可靠性,如物拍持久化、傳輸確認及發布確認等。
靈活的路由 ∶在消息進入隊列之前,通過交換器來路由消息。對於典型的路由功能,RabbitMQ已經提供了一些內置的交換器來實現。坦螞鍵針對更復雜的路由功能,可以將多個交換器綁定在一起,也可以通過插件讓巧機制來實現自己的交換器。
擴展性 ∶多個RabbitMQ節點可以組成一個集群,也可以根據實際業務情況動態地擴展集群中節點。
高可用性 ∶ 隊列可以在集群中的機器上設置鏡像,使得在部分節點出現問題的情況下隊列仍然可用。
多種協議 ∶ RabbitMQ除了原生支持AMQP協議,還支持STOMP、MQTT等多種消息中間件協議
多語言客戶端 ∶ RabbitMQ幾乎支持所有常用語言,比如 Java、Python、Ruby、PHP、C#、JavaScript 等。
管理界面 ∶RabbitMQ 提供了一個易用的用戶界面,使得用戶可以監控和管理消息、集群中的節點等。
插件機制 ∶RabiMQ提供了許多插件,以實現從多方面進行擴展,當然也可以編寫自己的插件。
③ RabbitMQ筆記十:MessageConverter詳解
org.springframework.amqp.support.converter.MessageConverter
Message toMessage(Object object, MessageProperties messageProperties);
將java對象和屬性對象轉換成Message對象。
Object fromMessage(Message message) throws MessageConversionException;
將消息對象轉換成java對象。
定義Config類
MessageListenerAdapter中定義的消息轉換器,消費端接收的消息就從Message類型轉換成了String類型
消費者處理消息的Handler
啟動類
啟動應用類,發送消息到 hao.miao.order 隊列,控制台列印:
從控制台列印我們知道了在消費者處理消息之前會進行消息類型轉換,調用 TestMessageConverter 的 fromMessage 方法,然後執行消息處理器的 onMessage 方法,方法參數就是 String 類型。
自定義一個MyBody類型,將消息從Message轉換成MyBody類型
然後修改 TestMessageConverter 的 fromMessage 方法,返回了 MyBody 類型,那麼消息處理器的消費方法也是MyBody參數的消費方法
此時的消息處理器,處理器中的方法的入參就是MyBody類型了,
此時控制台列印:
我們還測試如下如果不使用自定義的 Converter ,那麼當消息的屬性中含有屬性content_type的值為text,那麼默認的轉換成的java類型就是String類型,如果不指定那麼默認的轉換類型就是byte[]
我們跟進去 MessageListenerAdapte r的 setMessageConverter 方法,
我們發現默認的 MessageConverter 是 SimpleMessageConverter ,我們進入 SimpleMessageConverter 類中看其默認的轉換邏輯
源碼分析總結:
1. MessageConverter 可以把 java 對象轉換成 Message 對象,也可以把 Message 對象轉換成 java 對象
2. MessageListenerAdapter 內部通過 MessageConverter 把 Message 轉換成java對象,然後找到相應的處理方法,參數為轉換成的java對象。
3. SimpleMessageConverter 處理邏輯:
如果 content_type 是以text開頭,則把消息轉換成 String 類型
如果 content_type的 值是 application/x-java-serialized-object 則把消息序列化為java對象,否則,把消息轉換成位元組數組。