四.用JMS實現MQ編程
上面我們說明了怎樣用JMSAdmin Tool定義MQ對象的上下文。我們的最終目的是要用JMS來實現MQ編程,以實現在程序中對MQ隊列進行收、發消息。所以,下面我們將重點討論一下MQ的JMS實現。
如果您對JMS編程很熟悉,那麼您也就會用JMS來實現MQ編程,因為用JMS來編寫MQ程序與編寫一般的JMS程序沒有太大的差別。舉個例子,當我們想發送一條消息到MQ的隊列中,再從該隊列中取回消息時,我們編程時主要有四個步驟。首先我們要初始化在程序中要用到的對象,然後才可以發送消息到隊列中去,再就是收取消息,最後要清除那些永久對象。這些都和普通的JMS程序相當。程序的源代碼如下:
import java.util.Hashtable;
import javax.jms.*;
import javax.naming.*;
import javax.naming.directory.*;
public class sample {
protected QueueConnectionFactory factory=null;
protected QueueConnection connection;
protected QueueSession queueSession;
protected TextMessage outMessage;
protected QueueSender queueSender;
protected QueueReceiver queueReceiver;
public static final String qcfLookup=”EXAMPLEQCF”;
public static final String qLookup=”EXAMPLEQL”;
public static final String icf = “com.sun.jndi.fscontext.RefFSContextFactory”;
public String url =”file:/d:/temp”;
public void sampleInit() throws Exception {
Hashtable environment = new Hashtable();
environment.put(Context.INITIAL_CONTEXT_FACTORY, icf);
environment.put(Context.PROVIDER_URL, url);
environment.put(Context.REFERRAL, “throw”);
Context ctx=new InitialDirContext(environment);
factory = (QueueConnectionFactory)ctx.lookup(qcfLookup);
Queue q1=null;
q1=(Queue)ctx.lookup(qLookup);
connection = factory.createQueueConnection();
queueSession = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
queueSender = queueSession.createSender(q1);
queueSender.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
outMessage = queueSession.createTextMessage();
queueReceiver = queueSession.createReceiver(q1);
connection.start();
}
public void sendMessageOut(String message) throws JMSException {
outMessage.setText(message);
queueSender.send(outMessage);
}
public String receiveMessage() throws Exception{
return ((TextMessage)queueReceiver.receive()).getText();
}
public void sampleClose() throws JMSException {
queueSession.close();
connection.close();
}
public static void main(String[] args){
String rec;
sample sp = new sample();
try {
sp.sampleInit();
sp.sendMessageOut(“Hello World!”);
java.lang.Thread.sleep(4000);
rec=sp.receiveMessage();
System.out.println(“Receive text is : “+rec);
sp.sampleClose();
}catch(Exception e) {
e.printStackTrace();
}
}
}
以下文章點擊率最高
Loading…