package com.jms;
import java.util.Hashtable;
import javax.jms.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class SendRecvClient {
static CountDown done = new CountDown(1);
QueueConnection conn;
QueueSession session;
Queue que;
public static class ExListener implements MessageListener {
public void onMessage(Message msg) {
done.release();
TextMessage tm = (TextMessage)msg;
try {
System.out.println("onMessage, recv text=" + tm.getText());
} catch (Exception e) {
e.printStackTrace();
}
}
}
@SuppressWarnings("unchecked")
public void setupPTP() throws NamingException, JMSException {
// Hashtable env = new Hashtable();
// env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
// env.put(Context.PROVIDER_URL, "localhost:1099");
InitialContext iniCtx = new InitialContext();
Object tmp = iniCtx.lookup("ConnectionFactory");
QueueConnectionFactory qcf = (QueueConnectionFactory)tmp;
conn = qcf.createQueueConnection();
que = (Queue)iniCtx.lookup("/queue/DLQ");
session = conn.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
conn.start();
}
public void sendRecvAsync(String text) throws NamingException, JMSException {
System.out.println("Begin sendRecvAsyc");
setupPTP();
QueueReceiver recv = session.createReceiver(que);
recv.setMessageListener(new ExListener());
QueueSender send = session.createSender(que);
TextMessage tm = session.createTextMessage(text);
send.send(tm);
System.out.println("sendRecvAsyc sent=" + tm.getText());
send.close();
System.out.println("End sendRecvAsyc");
}
public void stop() throws JMSException {
conn.stop();
session.close();
conn.close();
}
public static void main(String[] args) {
SendRecvClient client = new SendRecvClient();
try {
client.sendRecvAsync("hello world");
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
注意:jboss6的JMS设置在deploy目录hornetq下hornetq-jms.xml
把jboss final6/client下jbossall-client.jar加入到jre路径下