📄 asyncsubscriber.java
字号:
/*******************************************************************
<br>Copyright (C), 2004-2006, yeeku.H.Lee
<br>Program Name:SyncConsumer.java
<br>作用:演示pub/sub消息同步消费者程序。
<br>Author:yeeku.H.lee kongyeeku@163.com
<br>Version:1.0
<br>This program is protected by copyright laws.
<br>Date: 2005-9-22
*******************************************************************/
package leejms;
import javax.jms.JMSException;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
import javax.jms.TopicSubscriber;
import javax.jms.TopicSession;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.InitialContext;
import java.util.Properties;
public final class AsyncSubscriber implements MessageListener
{
private TopicSubscriber subscriber;
private TextMessage msg;
public AsyncSubscriber()throws NamingException,JMSException
{
Context ctx=getInitialContext();
TopicConnectionFactory tConFactory=(TopicConnectionFactory)ctx.lookup("weblogic.jms.ConnectionFactory");
Topic messageTopic=(Topic)ctx.lookup("MessageTopic");
TopicConnection tCon=tConFactory.createTopicConnection();
//tCon.setClientID("1");
TopicSession session=tCon.createTopicSession(false,/*不是事物性会话*/Session.AUTO_ACKNOWLEDGE);
subscriber=session.createSubscriber(messageTopic);
subscriber.setMessageListener(this);
tCon.start();
}
public void onMessage(Message m)
{
try
{
TextMessage msg=(TextMessage) m;
System.out.println("接收的消息体内容:" + msg.getText());
System.out.println("接收的完整消息:" + msg);
}
catch (JMSException e)
{
e.printStackTrace();
}
}
//----------------公用函数,用来获取命名服务的Context对象-------------------------
protected Context getInitialContext()
{
String url = "t3://localhost:8181";
Properties properties = null;
Context ctx=null;
try
{
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
p.put(Context.PROVIDER_URL, url);
ctx = new InitialContext(p);
}
catch(NamingException ne)
{
System.err.println("不能连到WebLogic server在" +url);
ne.printStackTrace();
}
return ctx;
}
//------------------------主函数,程序的入口-----------------------------
public static void main(String[] args)throws Exception
{
AsyncSubscriber ms = new AsyncSubscriber();
Thread.sleep(30000);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -