介紹
Spring提供了一個JMS集成框架,簡化了JMS API的使用,就像Spring集成JDBC API。
JMS可以大致分為兩個功能區(qū)域,即消息的生產(chǎn)和消費。 JmsTemplate類用于消息生成和同步消息接收。對于類似于Java EE的消息驅動bean樣式的異步接收,Spring提供了許多用于創(chuàng)建消息驅動的POJO(MDP)的消息偵聽容器。 Spring還提供了一種創(chuàng)建消息偵聽器的聲明式方法。
使用
JmsTemplate
JmsTemplate類是JMS核心包中的中心類。它簡化了JMS的使用,因為它在發(fā)送或同步接收消息時處理資源的創(chuàng)建和釋放。
connections
標準API涉及創(chuàng)建許多中間對象。 要發(fā)送消息,將執(zhí)行以下步驟執(zhí)行:
ConnectionFactory-> Connection-> Session-> MessageProducer-> send
在ConnectionFactory和發(fā)送操作之間,有三個中間對象被創(chuàng)建和銷毀。 為了優(yōu)化資源使用和提高性能,提供了ConnectionFactory的兩個實現(xiàn)。
SingleConnectionFactory
Spring提供了ConnectionFactory接口的一個實現(xiàn),SingleConnectionFactory,將在所有createConnection()調用上返回相同的Connection,并忽略對close()的調用。
CachingConnectionFactory
CachingConnectionFactory擴展了SingleConnectionFactory的功能,并添加了Sessions,MessageProducers和MessageConsumers的緩存。初始高速緩存大小設置為1,使用屬性sessionCacheSize增加高速緩存的會話數(shù)。
JmsTemplate有各種發(fā)送方法,它們將Java對象作為消息數(shù)據(jù)內容的參數(shù)。 JmsTemplate中的重載方法convertAndSend()和receiveAndConvert()將轉換過程委派給MessageConverter接口的實例。這個接口定義一個簡單的契約,在Java對象和JMS消息之間進行轉換。默認實現(xiàn)SimpleMessageConverter支持在String和TextMessage之間轉換,byte []和BytesMesssage,以及java.util.Map和MapMessage。通過使用轉換器,您和您的應用程序代碼可以專注于通過JMS發(fā)送或接收的業(yè)務對象,而不關心它如何表示為JMS消息的細節(jié)。