JMS 使用步骤:以下以P2P 的例子加以说明,pub/sub的例子与此相似。

JMS 发送机:

第一步:需要一些属性来初始化容器。

        属性一:标识是那种容器,如weblogic :weblogic.jndi.WLInitialContextFactory

       属性二:访问容器的协议地址和端口:t3://localhost:7003

属性三:用户名和密码(这两个属性可选)

初始化运行JMS相关API的容器。

代码:

Properties p = new Properties();

p.put("Context.INITIAL_CONTEXT_FACTORY","weblogic.jndi.WLInitialContextFactory");

p.put(Context.PROVIDER_URL,"t3://localhost:7003");

p.put(Context.SECURITY_PRINCIPAL,"weblogic");//(可选)

p.put(Context.SECURITY_CREDENTIALS,"weblogic");//凭证 证件 (可选)

Context ctx = new InitialContext(p);// 上下文

第二步:测试是否连接JMS服务器上。

        Context 上下文提供的bind(绑定)方法,可以把一些相关的属性绑定到weblogic 中的JNDI 中,

并可以查询到。调用上下文提供的lookUp(查询) 方法,查询已经绑定在JNDI 树上的属性。

如果,绑定和查询 都没有问题,那说明已经连接到了JMS 服务器上。当然,Context 也提供了其它的API。代码:

/**测试JNDI 是否联连成功 是否可以把属性挂在JNDI 树上 开始*/

ctx.bind("name","zs");

Object ojbObject = ctx.lookup("name");

System.out.println(ojbObject.toString());

/**测试JNDI 是否联连成功 是否可以把属性挂在JNDI 树上 结束*/

第三步:查询JMS 连接工厂。

        获取一个JMS连接工厂是为了获取与服务器的连接。前题是这个JMS工厂一定要事先创建好,

代码:

QueueConnectionFactory connectionFactory =  (QueueConnectionFactory) ctx.lookup("testcf");

注:查询的是连接工厂的JNDI的名字,不是连接工厂的名字。

第四步:创建一个列队或主题连接。

        创建一个列队或主题连接是为了获取与JMS会话的Session.代码:

QueueConnection qConnection  = connectionFactory.createQueueConnection();

第五步:创建会话Session 。

        创建会话Session 是为了创建一个消息的发送者和发送内容类型。

代码:

QueueSession qSession = qConnection.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);

注:有两个参数,这里就不多说了,具体的使用可以去查一下,建意这样写。

第六步:创建一个列队来存储消息,是消息的存方的物理地址,前题是这个队列需要在weblogic里创建后。

        代码:

Queue queue = (Queue) ctx.lookup("testjms");

第七步:创建一个消息的发送者。代码:   

QueueSender qSender =  qSession.createSender(queue);

第八步:创建一个发送内容类型(Stream,byte,map,text,object)。代码:

TextMessage tesTextMessage=qSession.createTextMessage();//建立消息

qSession.createTextMessage();

第九步:打开连接,设置发送文本内容。代码:

qConnection.start();//开始连接

tesTextMessage.setText(" 哈哈 成功了");//设置发送内容

qSender.setDeliveryMode(DeliveryMode.PERSISTENT);//设置发送模型

qSender.send(tesTextMessage); //发送 

第十步:关才相关连接,释放资源。代码:

        if(qConnection != null){

qConnection.stop();

qConnection.close();

qConnection=null;

}



JMS 消息消费机: 前六步与消息发送机一样,这里 就不多说了,查以参考一下。

    

第七步:创建 一个消息的接收者,获取消费消息。代码:

MessageConsumer comsumer = qSession.createConsumer(queue);

第八步:打开连接,接收消息。代码:

     qConnection.start();

     TextMessage textMessage =(TextMessage)comsumer.receive();

     String receiveString = textMessage.getText();

     System.out.println(receiveString);

第九步:关才相关连接,释放资源。代码:

        if(qConnection != null){

       qConnection.stop();

qConnection.close();

qConnection=null;

}

说明:以上代码是以point to point 的模式为例。一些代码还是需要修改的在项目中。这里只做这参考。

有时间,我会把相关的学习笔记和别人的笔记做整理,供大家学习。