您的位置:首页 > 其它

JMS连接WMQ及收发消息

2013-07-11 18:06 357 查看
因为对JMS的了解也只算入门级,有些概念也很模糊,不过,卤煮会尽可能去介绍的。另外,sample code都调试过可以跑。

1.神马是JMS?

jms即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。——摘自百度百科

2.JMS组成要素

JMS提供者,JMS客户,JMS生产者,JMS消费者,JMS队列和JMS主题。具体啥意思,还是参考百度百科吧,不过,概念讲起来也木有啥意思,还会把人绕晕。多跑几次sample,回来再看概念可能更清楚些哈。另,博文中的JMS提供者以IBM 的WebSphere MQ为例。

3.JMS模型

JMS模型定义一组可供 Java™ 应用程序用于执行消息传递操作的接口。

以下列表概括了主要的JMS接口:

Destination:Destination 对象是应用程序将消息发往的位置和/或应用程序从其接收消息的源。

ConnectionFactory:ConnectionFactory 对象包括连接的一组配置属性。应用程序使用连接工厂来创建连接。

Connection:Connection 对象包括应用程序与消息传递服务器的活动连接。应用程序使用连接来创建会话。

Session:Session 对象是用于发送和接收消息的单个线程上下文。应用程序使用会话来创建消息、消息生产者和消息使用者。会话是事务性或非事务性会话。

Message:Message 对象包括应用程序发送或接收的消息。

MessageProducer:应用程序使用消息生产者将消息发送到目标。

MessageConsumer:应用程序使用消息使用者来接收已发送到目标的消息。

下图是这些对象之间的关系(摘自IBM Info Center)其实,IBM info center中资料多多的呀。

package com.demo;

import java.util.Hashtable;

import javax.jms.*;
import javax.naming.*;

public class Tester {
public static void main(String[] args) {
send();
}

public static void send() {
try {

Hashtable<String, String> environment = new Hashtable<String, String>();
//刚才建的初始上下文哈
environment.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.fscontext.RefFSContextFactory");
environment.put(Context.PROVIDER_URL, "file:/D:/JNDI-Directory");
InitialContext initContext = new InitialContext(environment);
//创建的连接工厂哈
ConnectionFactory factory = (ConnectionFactory) initContext
.lookup("TestQM_Q");
//创建的目标哈
Destination destination = (Destination) initContext
.lookup("TestQueue");
initContext.close();

Connection connection = factory.createConnection();
Session session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);

MessageProducer sender = session.createProducer(destination);
// Send messages
TextMessage message = session

.createTextMessage("hello, this is my first jms sample code~~~");

//记住,message并不是send到“TestQueue”里面去了,而是send到WMQ上与“TestQueue”关联的那个queue里面去了
sender.send(message);
session.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}


View Code
好了,就介绍到这里了。Happy ending~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: