您的位置:首页 > 其它

JMSClient 简单例子 for jbos-3.2.7

2005-12-14 01:55 369 查看
首先提供一个工具类,从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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: