1. 消息是JMS的一種類型對象,由兩部分組成:報頭和消息主體。報頭由路由信息以及有關該消息的元數據組成。
2. 根據有效負載的類型來劃分:
簡單文本(TextMessage)
可序列化的對象(ObjectMessage)
屬性集合(MapMessage)
字節流(BytesMessage)
原始值流(StreamMesage)
無有效負載的消息(Message)
3. 支持兩種模型
點對點模型(point to point PTP)
發佈者/訂閱者模型(publish/subscribe) pub/sub
4. JMS只是接口,並沒有給與實現,實現JMS接口的消息中間件成爲JMS Provider
5. 開發JMS的步驟
廣義上說,一個JMS應用是幾個JMS客戶端交換信息,開發JMS應用程序由以下幾步構成:
用JNDI得到ConnectionFactory對象
用JNDI得到目標隊列或主題對象,及Destination對象
用ConnectionFactory創建Connection對象
用Connection對象創建一個或多個JMS Session
用Session和Destination創建MessageProducer和MessageConsumer
通知Connection開始傳遞消息
6. ProduceràConnectionFactoryàConnectionàsessionà(Message/Destination)
Destination+SessionàProducer
Destination+SessionàMessageConsumer
7.
8. 消息類型
結構化或半結構化的消息類型:MapMessage,ObjectMessage,StreamMeaasge
非結構化或自由格式:TextMessage,BytesMessage
9. JMS能在JAVAEE五花八門的協議裏,webservice滿天飛的時候佔有一定的位置,是因爲:
它可以把不影響用戶執行效果又比較耗時的任務(比如發送郵件通知管理員)異步的扔給JMS服務端去做,而儘快的把屏幕返回給用戶
服務端能夠多線程排隊響應高併發的請求,並保證請求不丟失
可以在java世界裏達到最高的解耦,客戶端與服務端無需直連,甚至無需知曉對方是誰、在哪裏、有多少人,只要對流過的嘻嘻做響應就行了,在企業應用環境發扎的時候,作用明顯
10. ActiveMQ的特性
完全支持JMS1.1和JAVAEE1.4規範的JMS Provider實現,也是Apache Geronimo默認的JMS Provider
POJO without Ejb Container,不需要實現Ejb複雜的Message Bean接口配置
Spring base,可使用spring IOC,AOP
EFFECTIVE,基於JCA Container實現
11. 連接的Url failover:(tcp://localhost:61616)
其中failover關鍵字表示客戶端與ActiveMQ server的連接中斷後,客戶端會自動重新連接