当前页面: 开发资料首页 → J2EE 专题 → 开发JRun的JMS服务指南
摘要: 如果你以前没有用过 JMS,那么可能是因为你还没有一个使用它的原因。如果你以前编写过你自己的消息系统,那么很可能你将从 JMS API 中受益。
file
file
rdbm
jms/queue/testQueue
testQueue
javax.jms.Queue
QueueConnectionFactory
jms/jndi-QueueConnectionFactory
javax.jms.QueueConnectionFactory
<transport>RMI</transport>
guest
guest
public class JmsQueueTest
{
private Context context = null;
private QueueConnection connection = null;
private QueueSession session = null;
private Queue queue = null;
private QueueSender sender = null;
private String connectionFactory;
private String queueJndiName;
public void setConnectionFactory(String connectionFactory)
{
this.connectionFactory = connectionFactory;
}
public void setQueueJndiName(String queueJndiName)
{
this.queueJndiName = queueJndiName;
}
/**
* 初始化JMS队列
* @param ctxFactory
* @param url
* @param user
* @param pwd
* @throws Exception
*/
public void init(String ctxFactory,String url,String user,String pwd)throws Exception
{
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY,ctxFactory);
p.put(Context.PROVIDER_URL,url);
p.put(Context.SECURITY_PRINCIPAL,user);
p.put(Context.SECURITY_CREDENTIALS,pwd);
context = new InitialContext(p);
QueueConnectionFactory factory = (QueueConnectionFactory)context.lookup(connectionFactory);
connection = factory.createQueueConnection();
queue = (Queue)context.lookup(queueJndiName);
session = connection.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);
sender = session.createSender(queue);
connection.start();
}
/**
* 发送文本消息
* @param txt
* @throws Exception
*/
public void send(String txt)throws Exception
{
TextMessage tmsg = session.createTextMessage();
tmsg.setText(txt);
sender.send(tmsg);
}
/**
* 查询队列中保存的消息
* @throws Exception
*/
public void browser()throws Exception
{
QueueBrowser browser = session.createBrowser(queue);
Enumeration enum = browser.getEnumeration();
System.out.println("QueueBrowser");
while (enum.hasMoreElements())
{
System.out.println(enum.nextElement());
}
browser.close();
}
/**
* 接收消息
* @throws Exception
*/
public void receive()throws Exception
{
QueueReceiver receiver = session.createReceiver(queue);
while(true)
{
TextMessage message = (TextMessage)receiver.receiveNoWait();
if(message == null)break;
System.out.println("receive message:" + message.getText());
}
receiver.close();
}
public void close()throws Exception
{
sender.close();
session.close();
connection.close();
context.close();
}
public static void main(String[] args)throws Exception
{
String ctxFactory = "jrun.naming.JRunContextFactory";
String url = "192.168.2.240:2908";
String user = "guest";
String pwd = "guest";
String connectionFactoryJndi = "jms/jndi-QueueConnectionFactory";
String queueJndi = "jms/queue/testQueue";
JmsQueueTest test = new JmsQueueTest();
test.setConnectionFactory(connectionFactoryJndi);
test.setQueueJndiName(queueJndi);
test.init(ctxFactory,url,user,pwd);
test.send("java共舞JMS消息");
test.browser();
test.receive();
test.close();
}