初次接触,我在网上找了些例子:
发布消息:
/**
*
*/
package dlc.jboss.mqexample;import java.util.Hashtable;
import java.util.Properties;import javax.jms.JMSException;
import javax.jms.Session;
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.naming.Context;
import javax.naming.InitialContext;/**
* 主题式的进行发送消息例子
*
* @author lenovo
*
*/
public class PublishToTopic { /**
* @param args
* @return void
* @auther lenovo 2010-4-19 下午02:09:12
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TopicConnection tc = null; try {
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");
env.put(Context.PROVIDER_URL, "localhost:1099");
Context ctx = new InitialContext(env); // 建立连接工厂;并从连接工厂中建立消息队列连接;再从消息队列连接中建立一个会话;
// 再从会话中建立发送对象
Object tmp = ctx.lookup("ConnectionFactory"); TopicConnectionFactory tcf = (TopicConnectionFactory) tmp; Topic t = (Topic) ctx.lookup("topic/TopicExample"); // 注意前面的Topic要小写首字母
tc = tcf.createTopicConnection();
TopicSession ts = tc.createTopicSession(false,
Session.AUTO_ACKNOWLEDGE);
TopicPublisher tp = ts.createPublisher(t);
TextMessage msg = ts.createTextMessage();
for (int i = 0; i < 10; i++) {
msg.setText("Welcome number " + (i + 1));
tp.publish(msg);
System.out.println("Publish Message To "
+ " topic/TopicExample " + " : " + msg.getText()
+ "\n");
}
tp.close();
ts.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (tc != null) {
try {
tc.close();
} catch (JMSException e) {
}
}
}
}}接收的:
package dlc.jboss.mqexample;import java.util.Properties;import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
import javax.jms.TopicSession;
import javax.jms.TopicSubscriber;
import javax.naming.Context;
import javax.naming.InitialContext;/**
* @author lenovo
*
*
*/
public class SubscribeFromTopic {
public static void doSubscribe(String tName) {
Message msg;
TextMessage txtMsg;
TopicConnection tc = null;
try {
Properties p = new Properties();
p.setProperty(Context.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");
p.setProperty(Context.PROVIDER_URL, "localhost:1099"); InitialContext jc = new InitialContext(p);
TopicConnectionFactory tcf = (TopicConnectionFactory) jc
.lookup("ConnectionFactory");
Topic t = (Topic) jc.lookup(tName);
tc = tcf.createTopicConnection();
TopicSession ts = tc.createTopicSession(false,
Session.AUTO_ACKNOWLEDGE);
TopicSubscriber tSubscriber = ts.createSubscriber(t); msg = tSubscriber.receive(100);
while (msg != null) {
if (msg instanceof TextMessage) {
txtMsg = (TextMessage) msg;
System.out.println("Receive Msg from " + tName + " : "
+ txtMsg.getText());
}
msg = tSubscriber.receive(100);
} tSubscriber.close();
ts.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (tc != null) {
try {
tc.close();
} catch (JMSException e) {
}
}
}
} public static void main(String[] args) {
//doListen(tName); // 通过消息监听器接收消息
doSubscribe("topic/TopicExample"); //通过receive()来接收消息
}
}
怎么每次去取的时候,都是空的?是不是在哪里要设置下他的时间啊还是什么。请指教啊
发布消息:
/**
*
*/
package dlc.jboss.mqexample;import java.util.Hashtable;
import java.util.Properties;import javax.jms.JMSException;
import javax.jms.Session;
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.naming.Context;
import javax.naming.InitialContext;/**
* 主题式的进行发送消息例子
*
* @author lenovo
*
*/
public class PublishToTopic { /**
* @param args
* @return void
* @auther lenovo 2010-4-19 下午02:09:12
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TopicConnection tc = null; try {
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");
env.put(Context.PROVIDER_URL, "localhost:1099");
Context ctx = new InitialContext(env); // 建立连接工厂;并从连接工厂中建立消息队列连接;再从消息队列连接中建立一个会话;
// 再从会话中建立发送对象
Object tmp = ctx.lookup("ConnectionFactory"); TopicConnectionFactory tcf = (TopicConnectionFactory) tmp; Topic t = (Topic) ctx.lookup("topic/TopicExample"); // 注意前面的Topic要小写首字母
tc = tcf.createTopicConnection();
TopicSession ts = tc.createTopicSession(false,
Session.AUTO_ACKNOWLEDGE);
TopicPublisher tp = ts.createPublisher(t);
TextMessage msg = ts.createTextMessage();
for (int i = 0; i < 10; i++) {
msg.setText("Welcome number " + (i + 1));
tp.publish(msg);
System.out.println("Publish Message To "
+ " topic/TopicExample " + " : " + msg.getText()
+ "\n");
}
tp.close();
ts.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (tc != null) {
try {
tc.close();
} catch (JMSException e) {
}
}
}
}}接收的:
package dlc.jboss.mqexample;import java.util.Properties;import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
import javax.jms.TopicSession;
import javax.jms.TopicSubscriber;
import javax.naming.Context;
import javax.naming.InitialContext;/**
* @author lenovo
*
*
*/
public class SubscribeFromTopic {
public static void doSubscribe(String tName) {
Message msg;
TextMessage txtMsg;
TopicConnection tc = null;
try {
Properties p = new Properties();
p.setProperty(Context.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");
p.setProperty(Context.PROVIDER_URL, "localhost:1099"); InitialContext jc = new InitialContext(p);
TopicConnectionFactory tcf = (TopicConnectionFactory) jc
.lookup("ConnectionFactory");
Topic t = (Topic) jc.lookup(tName);
tc = tcf.createTopicConnection();
TopicSession ts = tc.createTopicSession(false,
Session.AUTO_ACKNOWLEDGE);
TopicSubscriber tSubscriber = ts.createSubscriber(t); msg = tSubscriber.receive(100);
while (msg != null) {
if (msg instanceof TextMessage) {
txtMsg = (TextMessage) msg;
System.out.println("Receive Msg from " + tName + " : "
+ txtMsg.getText());
}
msg = tSubscriber.receive(100);
} tSubscriber.close();
ts.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (tc != null) {
try {
tc.close();
} catch (JMSException e) {
}
}
}
} public static void main(String[] args) {
//doListen(tName); // 通过消息监听器接收消息
doSubscribe("topic/TopicExample"); //通过receive()来接收消息
}
}
怎么每次去取的时候,都是空的?是不是在哪里要设置下他的时间啊还是什么。请指教啊
解决方案 »
- JXL导出报表出现了java.lang.NoClassDefFoundError: jxl/format/CellFormat怎么解决
- 关于web服务封装问题
- Unable to open location: Document not found on server是什么问题啊
- hibernate <one-to-one>出错急!
- 下载ZIP文件报CRC校验错误
- 怎样确认oralce的jdbc驱动是否支持jdk
- 直接从控制台启动weblogic后配置成功的数据库连接池,在由jbuilder启动的weblogic下就变成UNAVAILABLE了?
- 关于Jbuilder9.0+JBOSS开发实体EJB的环境配置问题?
- 关于在MasteringEJB运行实例代码遇到的问题!
- Weblogic中的带的jre是不是不太好用?
- ssh2框架的使用问题!
- 有用myeclipse 8.5的么
里面的 if (msg instanceof TextMessage) 干扰了你的思维。
最好养成好的写代码习惯,减少无意间出错的概率。msg = tSubscriber.receive(100);
while (msg != null) {
if (msg instanceof TextMessage) {
txtMsg = (TextMessage) msg;
System.out.println("Receive Msg from " + tName + " : " + txtMsg.getText());
}
msg = tSubscriber.receive(100);
}