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种.