33.2 基本的jms api概念
?? 33.2.1 jms api體系結構
???? jms應用程序組成部分:
????a. jms提供者--------j2ee平臺.
??? b.jms客戶端--------需要用戶完成的應用程序.
??? c.消息----在客戶端之間傳遞信息的對象
?? d.管理的對象----連接工廠和目的地
?33.2.2 消息域
???分為"點到點消息傳遞域"和"發表/訂閱小心傳遞域"
?33.2.3 消費消息
???兩種方式:同步和異步.同步直接用receive方法提取消息.異步需要可湖段為消費者注冊一個見聽器.通過調用見聽器的onMessage方法來分發消息.
33.3 jms api編程模型
? 33.3.1 管理的對象
?? a.連接工廠
??? 通常是執行jndi查找獲得連接工廠.eg:
? Context ctx= new InitialContext();
? ConnectionFactory cf=(ConnectionFactory )?ctx.lookup("jms/QueueConnectionFactory");
ConnectionFactory cf=(ConnectionFactory )?ctx.lookup("jms/TopicConnectionFactory");
?b.目的地
?? 在ptp中,目的地是"隊列".在發表/訂閱中,目的地是"主題".
? eg:
Destination mydest=(Topic)ctx.lookup("jms/mytopic");
33.3.2 連接
?連接由連接工廠來創建.eg:
Connection conn=ConnectionFactory .createConnection();
33.3.3 會話
會話 由 Connection來創建
Session session=Connection.createSession(false,Session.AUTO_ACKOWLEDGE);
事務性的會話
Session session=Connection.createSession(true,0);
33.3.4 消息生產者
由session 來創建,實現MessageProducer接口.
?? MessageProducer mp=session.createProducer(myQueue);
發送動作
mp.send(message);
33.3.5 消息消費者
?由session創建,實現MessageConsumer接口.
eg:
MessageConsumer mc=session.createConsumer(myQueue);
bwt:
利用session.createDurableSubscriber可以創建長期的訂閱者.
? ========獲得消息==
同步方式.
connection.start();
Message m=consumer.receive();
connection.start();
Message m=consumer.receive(1000); //time out afer a second
異步方式.
構造一個消息艦艇器,用setMessageListener方法向具體的MessageConsumer中注冊.eg:
? Listener myListener= new Listener ();
consumer.setMessageListener (myListener );
33.3.6 消息
分為消息頭,消息屬性和消息體,只有消息頭是必須的.
消息頭存放了可護短和提供者用來識別和路由消息的值.
常見的消息體的格式(消息類型)有5種.
?
?