关闭

OpenJMS简单发送、接收示例

942人阅读 评论(0) 收藏 举报
MOM(Message Oriented Middleware 面向消息的中间件)
集成应用系统的强大工具(松散耦合)
MOM提供在不同应用程序之间传递消息的服务
程序员不必考虑:消息握手、发送保证、定时、事务等
          
首先有以下几个概念:
TextMessage:   要发送的消息内容
MessageProducer:   消息发送者
MessageConsumer:   消息接收者
Destination:   目的地
Session:   QueueSession、TopicSession类所实现的接口。一个单线程的context
Connection:   连接
ConnectionFactory:   连接工厂
Context:   JNDI context
prop用的是Hashtable不是HashMap
 
1.  要想发送messge,需要一个发送者(MessageProducer)和发送的内容(TextMessage);
2.  TextMessage由session.createTextMessage(s)生成
3.  MessageProducer由session.createProducer(destination)生成
4.  destination由context.lookup(“queue1”)生成
5.  session由连接生成connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
6.  connection由connectionFactory.createConnection();生成
7.  connectionFactory由context.lookup生成
8.  context由new InitialContext(prop)得到
9.  prop就是一个hashtable,里面需要设置两个属性
Context.INITIAL_CONTEXT_FACTORY=“com.exolab.jms.jndi.InitialContextFactory”
Context.PROVIDER_URL=“tcp://localhost:3035”
 
 
一、初始工作
Hashtable prop = new Hashtable();
porp.put(Context.INITIAL_CONTEXT_FACTORY,”org.exolab.jms.jndi.InitialContextFactory”);
prop.put(Context.PROVIDER_URL,”tcp://localhost:3035”);
Context context = new InitialContext(prop);
ConnectionFactory factory = (ConnectionFactory)context.lookup(“ConnectionFactory”);
Connection connection = factory.createConnection();
connection.start();
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
Destination dest = (Destination)context.lookup("queue1");
 
二、消息的发送
MessageProducer sender = session.createProducer(dest);
TextMessage message = session.createTextMessage("hahahaha");
sender.send(message);
 
三、消息的同步接收
MessageConsumer consumer = session.createConsumer(dest);
Message message = consumer.receive();
 
四、消息的异步接收
receiver.setMessageListener(new MessageListener(){
   public void onMessage(Message arg0) {
     try {
           System.out.println(((TextMessage)arg0).getText());
     } catch (JMSException e) {
           e.printStackTrace();
     }
   }
});
connection.start();
 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:22982次
    • 积分:310
    • 等级:
    • 排名:千里之外
    • 原创:8篇
    • 转载:3篇
    • 译文:0篇
    • 评论:4条
    文章分类
    文章存档
    最新评论