EJB 2 JMS
1.消息的生产者 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import javax.jms.JMSException; import javax.jms.ObjectMessage; import javax.jms.Session; import javax.jms.TextMessage; import javax.jms.Topic; import javax.jms.TopicConnection; import javax.jms.TopicConnectionFactory; import javax.jms.TopicPublisher; import javax.jms.TopicSession; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import pojo.Student; /** * * @author Johnson */ public class Main { /** Creates a new instance of Main */ public Main() { } /** * @param args the command line arguments */ public static void main(String[] args) { Context context = null; TopicConnection connection = null; TopicSession session = null; TopicPublisher publisher = null; try { context = new InitialContext(); //1, 获取连接工厂 TopicConnectionFactory connectionFactory = (TopicConnectionFactory)context.lookup("topic/connectionFactory"); //2,创建连接 connection = connectionFactory.createTopicConnection(); //3, 创建会话 session = connection.createTopicSession(false,Session.AUTO_ACKNOWLEDGE); //4, 获取目的地 Topic topic = (Topic)context.lookup("topic/destination"); //5, 创建生产者 publisher = session.createPublisher(topic); //6, 发送消息 //publish ObjectMessage Student student = new Student(); student.setName("Johnson"); student.setAge(26); ObjectMessage objectMessage = session.createObjectMessage(); objectMessage.setObject(student); publisher.publish(objectMessage); //publish TextMessage BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String data = br.readLine(); while(!data.equals("quit")){ TextMessage message = session.createTextMessage(data); publisher.publish(message); data = br.readLine(); } } catch (NamingException ex) { ex.printStackTrace(); } catch (JMSException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } finally{ //从小到大释放资源 if(publisher != null){ try { publisher.close(); } catch (JMSException ex) { ex.printStackTrace(); } } if(session != null){ try { session.close(); } catch (JMSException ex) { ex.printStackTrace(); } } if(connection != null){ try { connection.close(); } catch (JMSException ex) { ex.printStackTrace(); } } if(context != null){ try { context.close(); } catch (NamingException ex) { ex.printStackTrace(); } } } } } 2.消息的消费者 import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.ObjectMessage; import javax.jms.Session; import javax.jms.TextMessage; import javax.jms.Topic; import javax.jms.TopicConnection; import javax.jms.TopicConnectionFactory; import javax.jms.TopicSession; import javax.jms.TopicSubscriber; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import pojo.Student; /** * * @author Johnson */ public class Main { /** Creates a new instance of Main */ public Main() { } /** * @param args the command line arguments */ public static void main(String[] args) { Context context = null; TopicConnection connection = null; TopicSession session = null; TopicSubscriber subscriber = null; try { context = new InitialContext(); //1, 获取连接工厂 TopicConnectionFactory connectionFactory = (TopicConnectionFactory)context.lookup("topic/connectionFactory"); //2,创建连接 connection = connectionFactory.createTopicConnection(); connection.start();//must //3, 创建会话 session = connection.createTopicSession(false,Session.AUTO_ACKNOWLEDGE); //4, 获取目的地 Topic topic = (Topic)context.lookup("topic/destination"); //5, 创建消费者 subscriber = session.createSubscriber(topic); //6, 接收消息 //方式一: /*while(true){ Message message = subscriber.receive(); if(message instanceof TextMessage){ TextMessage textMessage = (TextMessage)message; System.out.println("the message is : "+textMessage.getText()); } if(message instanceof ObjectMessage){ ObjectMessage objectMessage = (ObjectMessage)message; Student student = (Student)objectMessage.getObject(); System.out.println("hello "+student.getName()+" ,the next year your will be "+(student.getAge()+1)+" years old"); } }*/ //方式二:但不能在finally中释放资源(那样的话一次执行完后所有的资源都释放了,就没有资源为下次服务了)
- 粉丝: 13
- 资源: 29
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助