[转]JMS编程模式
消息形式:
点对点为两个客户之间建立消息队列,使两个客户端之间通过队列实现点对点的消息传递
注:类似数据结构里的队列,先进先出
主题消息,在消息中间件上建立一个主题,没个客户端都可已向这个主题发送消息,接受消息
注:类似广播的方式
开发流程:
使用JMS步骤
1.创建一个JNDI上下文
Context init initCtx =new InitialContext(env);
2.查找创建JMS连接使用的工厂类(Connnect Factory)
对于主题消息:
Object tmp=initCtx.lookup(“Connnect Factory”);
TopicConnectionFactory tcf=( TopicConnectionFactory) tmp;
对于点对点消息:
Object tmp=initCtx.lookup(“Connnect Factory”);
QueueConnectionFactory tcf=( QueueConnectionFactory) tmp;
3.查找JMS的目标对象(Destination)
对于主题消息:
Topic topic=(Topic)iniCtx.lookup(“topic/testTopic”);
对于点对点消息:
Queue queue (Queue)iniCtx.lookup(“queue /A”);
4.创建JMS连接(Connection)
对于主题消息:
TopicConnection conn=tcp.createTopicConnection();
对于点对点消息:
QueueConnection conn=tcp.createQueueConnection ();
5.创建JMS会话(session)
对于主题消息:
TopicSession session=conn.createTopicSession(fasle,Session.AUTO_ACKNOWLEDGE);
对于点对点消息:
QueueSession session= conn.createQueueSession(true,0);
6.创建消息的生产和消费者
生产者:
对于主题消息:
TopicPublisher publisher=session.createPublisher(topic);
对于点对点消息:
QueueSender sender = session.createSender (queue);
消费者:
对于主题消息:
TopicSubscriber subscriber=session.createSubscriber (topic);
对于点对点消息:
QueueReceiver receiver= session.createReceiver (queue);
7.注册消息的监听者
对于主题消息:
TextListener listener=new TextListener();
subscriber.setMessageListener(listener);
对于点对点消息:
TextListener listener=new TextListener();
receiver.setMessageListener(listener);
8.开始JMS的连接
conn.start();
9.发送和接受消息
发送消息:
对于主题消息:
publisher.publish(message);
对于点对点消息:
sender.send(message);
接受消息:
对于主题消息:
Message msg= subscriber.receive();
对于点对点消息:
Message msg= receiver.receive(1000);
10.停止和关闭JMS连接
conn.stop();
session.close();
conn.close();
转自:http://www.mldn.cn/articleview/2007-2-6/article_view_1377.htm