JMSClient 简单例子 for jbos-3.2.7

首先提供一个工具类,从properties文件中后去JNDI初始化上下信息.

Utils.java

package test.util;

import java.util.Hashtable;
import java.util.ResourceBundle;

import javax.naming.Context;
import javax.naming.InitialContext;

/**
 * 常用工具
 * @author Administrator
 *
 */
public class Utils {
 public static Context getJbossContext() throws Throwable{
  ResourceBundle resource = ResourceBundle.getBundle("jboss");
  System.out.println("java.naming.provider.url:"
    +resource.getString("java.naming.provider.url"));

  Hashtable ht = new Hashtable();
  ht.put("java.naming.provider.url"
    ,resource.getString("java.naming.provider.url"));

  ht.put("java.naming.factory.initial"
    ,resource.getString("java.naming.factory.initial"));

  ht.put("java.naming.factory.url.pkgs"
    ,resource.getString("java.naming.factory.url.pkgs"));

  Context jndiContext = new InitialContext(ht);
  return jndiContext;
 }
}

jboss.properties 文件置于classpath根路径下.

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=localhost:1099
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces

JMSClient类

package ejb.example;


import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueReceiver;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
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.jms.TopicSubscriber;
import javax.naming.Context;

import test.util.Utils;

/**
 * This is a Topic client for jms
 * use server is jboss
 *
 * @author Administrator
 *
 */
public class JMSClient {
 Topic    topic;
 TopicConnectionFactory tfactory;
 TopicConnection  tconn;
 TopicPublisher   publisher;
 TopicSubscriber  subscriber;
 TopicSession   tsession;
 
 Queue     queue;
 QueueConnectionFactory qfactory;
 QueueConnection  qconn;
 QueueSender   qsender;
 QueueReceiver  qreceiver;
 QueueSession  qsession;
 
 Context    ctx;
 TextMessage   msg;
 
 public void init() throws Throwable{
  try {
   ctx = Utils.getJbossContext();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 
 /**
  * send a text message to queue/testQueue
  * receiver receive msg once only.
  */
 public void p2pExample() throws Throwable{
  queue   = (Queue)ctx.lookup("queue/testQueue");
  qfactory   = (QueueConnectionFactory)ctx.lookup("ConnectionFactory");
  qconn   = qfactory.createQueueConnection();
  qconn.start();

  qsession  = qconn.createQueueSession(
    false,//不需要事务
    QueueSession.AUTO_ACKNOWLEDGE);//自动接收消息  
  qreceiver  = qsession.createReceiver(queue);
  qreceiver.setMessageListener(new MyListener());
  System.out.println("=====set up receiver listener");
  
  qsender  = qsession.createSender(queue);
  msg   = qsession.createTextMessage("HelloWorld");
  qsender.send(msg);
  System.out.println("=====set up qsender");
  
  qreceiver.close();
  qsender.close();
  qconn.stop();
  qsession.close();
  qconn.close();
 }
 
 /**
  * publish a msg
  * subscriber a msg
  */
 public void topic_subscriber() throws Throwable{
  topic   = (Topic)ctx.lookup("topic/testTopic");
  tfactory   = (TopicConnectionFactory)ctx.lookup("ConnectionFactory");
  tconn   = tfactory.createTopicConnection();
  tconn.start();

  tsession  = tconn.createTopicSession(
    false,//不需要事务
    QueueSession.AUTO_ACKNOWLEDGE);//自动接收消息
  
  subscriber = tsession.createSubscriber(topic);
  subscriber.setMessageListener(new MyTopicListener());
  
  publisher  = tsession.createPublisher(topic);
  msg   = tsession.createTextMessage();
  msg.setText("Hello world!");
  publisher.publish(msg);
  
  publisher.close();
  subscriber.close();
  tconn.stop();
  tsession.close();
  tconn.close();
 }
 

 class MyListener implements MessageListener{
  public void onMessage(Message msg){
   System.out.println("=========");
   System.out.println(msg.getClass().toString());
   System.out.println(msg instanceof TextMessage);
   System.out.println(msg);
   System.out.println("=========");
  }
 }
 
 class MyTopicListener implements MessageListener{
  public void onMessage(Message msg){
   System.out.println("=========MyTopicListener");
   System.out.println(msg.getClass().toString());
   System.out.println(msg instanceof TextMessage);   
   System.out.println(msg);
   System.out.println("=========MyTopicListener");
  }
 }
 
 /**
  * @param args
  */
 public static void main(String[] args) throws Throwable{
  JMSClient me = new JMSClient();
  me.init();
  me.p2pExample();
  me.topic_subscriber();
 }
}

运行结果:

package ejb.example;


import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueReceiver;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
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.jms.TopicSubscriber;
import javax.naming.Context;

import test.util.Utils;

/**
 * This is a Topic client for jms
 * use server is jboss
 *
 * @author Administrator
 *
 */
public class JMSClient {
 Topic    topic;
 TopicConnectionFactory tfactory;
 TopicConnection  tconn;
 TopicPublisher   publisher;
 TopicSubscriber  subscriber;
 TopicSession   tsession;
 
 Queue     queue;
 QueueConnectionFactory qfactory;
 QueueConnection  qconn;
 QueueSender   qsender;
 QueueReceiver  qreceiver;
 QueueSession  qsession;
 
 Context    ctx;
 TextMessage   msg;
 
 public void init() throws Throwable{
  try {
   ctx = Utils.getJbossContext();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 
 /**
  * send a text message to queue/testQueue
  * receiver receive msg once only.
  */
 public void p2pExample() throws Throwable{
  queue   = (Queue)ctx.lookup("queue/testQueue");
  qfactory   = (QueueConnectionFactory)ctx.lookup("ConnectionFactory");
  qconn   = qfactory.createQueueConnection();
  qconn.start();

  qsession  = qconn.createQueueSession(
    false,//不需要事务
    QueueSession.AUTO_ACKNOWLEDGE);//自动接收消息  
  qreceiver  = qsession.createReceiver(queue);
  qreceiver.setMessageListener(new MyListener());
  System.out.println("=====set up receiver listener");
  
  qsender  = qsession.createSender(queue);
  msg   = qsession.createTextMessage("HelloWorld");
  qsender.send(msg);
  System.out.println("=====set up qsender");
  
  qreceiver.close();
  qsender.close();
  qconn.stop();
  qsession.close();
  qconn.close();
 }
 
 /**
  * publish a msg
  * subscriber a msg
  */
 public void topic_subscriber() throws Throwable{
  topic   = (Topic)ctx.lookup("topic/testTopic");
  tfactory   = (TopicConnectionFactory)ctx.lookup("ConnectionFactory");
  tconn   = tfactory.createTopicConnection();
  tconn.start();

  tsession  = tconn.createTopicSession(
    false,//不需要事务
    QueueSession.AUTO_ACKNOWLEDGE);//自动接收消息
  
  subscriber = tsession.createSubscriber(topic);
  subscriber.setMessageListener(new MyTopicListener());
  
  publisher  = tsession.createPublisher(topic);
  msg   = tsession.createTextMessage();
  msg.setText("Hello world!");
  publisher.publish(msg);
  
  publisher.close();
  subscriber.close();
  tconn.stop();
  tsession.close();
  tconn.close();
 }
 

 class MyListener implements MessageListener{
  public void onMessage(Message msg){
   System.out.println("=========");
   System.out.println(msg.getClass().toString());
   System.out.println(msg instanceof TextMessage);
   System.out.println(msg);
   System.out.println("=========");
  }
 }
 
 class MyTopicListener implements MessageListener{
  public void onMessage(Message msg){
   System.out.println("=========MyTopicListener");
   System.out.println(msg.getClass().toString());
   System.out.println(msg instanceof TextMessage);   
   System.out.println(msg);
   System.out.println("=========MyTopicListener");
  }
 }
 
 /**
  * @param args
  */
 public static void main(String[] args) throws Throwable{
  JMSClient me = new JMSClient();
  me.init();
  me.p2pExample();
  me.topic_subscriber();
 }
}

运行 结果:

java.naming.provider.url:localhost:1099
=====set up receiver listener
=========
class org.jboss.mq.SpyTextMessage
true
SpyTextMessage {
Header {
   jmsDestination  : QUEUE.testQueue
   jmsDeliveryMode : 2
   jmsExpiration   : 0
   jmsPriority     : 4
   jmsMessageID    : ID:14-11344957714791
   jmsTimeStamp    : 1134495771479
   jmsCorrelationID: null
   jmsReplyTo      : null
   jmsType         : null
   jmsRedelivered  : false
   jmsProperties   : {}
   jmsPropReadWrite: false
   msgReadOnly     : true
   producerClientId: ID:14
}
Body {
   text            :HelloWorld
}
}
=====set up qsender
=========
=========MyTopicListener
class org.jboss.mq.SpyTextMessage
true
SpyTextMessage {
Header {
   jmsDestination  : TOPIC.testTopic
   jmsDeliveryMode : 2
   jmsExpiration   : 0
   jmsPriority     : 4
   jmsMessageID    : ID:17-11344959076641
   jmsTimeStamp    : 1134495907664
   jmsCorrelationID: null
   jmsReplyTo      : null
   jmsType         : null
   jmsRedelivered  : false
   jmsProperties   : {}
   jmsPropReadWrite: false
   msgReadOnly     : true
   producerClientId: ID:17
}
Body {
   text            :Hello world!
}
}
=========MyTopicListener

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值