• Queue Sender
• Synchronous Queue Receiver
• Asynchronous Queue Receiver
Gönderen Uygulama
1. InitialContext nesnesi tanımlanır.
2. Tanımlanan Context nesnesi JMS Server’da tanımlanmış olan kuyruk(queue) yapısını arar.
3. Tanımlanan kuyruk yapısı için QueueConnectionFactory nesnesi tanımlanır.
4. QueueConnectionFactory nesnesini kullanarak QueueConnection nesnesini yaratırız.
5. Yaratılan Connection uzerinden QueueSession nesnesini yaratırız. Bu session’ın transacted olup olmamasına burda karar veririz.
6. QueueSession nesnesini kullanarak QueueSender nesnesini yaratırız ve ilgili mesajımızı tanımlarız.
7. Tanımladığımız mesajı gönderici kuyruk yapısı ile göndeririz.
Yukarıda yapılan anlatımları kodlamak istersek :
QueueConnection queueConn = null;
try {
InitialContext ctx = new InitialContext();
Queue queue = (Queue) ctx.lookup("queue/queue0");
QueueConnectionFactory connFactory = (QueueConnectionFactory) ctx.lookup("queue/connectionFactory");
queueConn = connFactory.createQueueConnection();
QueueSession queueSession = queueConn.createQueueSession(false, Session.DUPS_OK_ACKNOWLEDGE);
QueueSender queueSender = queueSession.createSender(queue);
queueSender.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
TextMessage message = queueSession.createTextMessage("Asin Akdeniz");
queueSender.send(message);
} catch (Exception ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}finally{
if(queueConn != null){
try {
queueConn.close();
} catch (JMSException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
}//end of finally
Alıcı Uygulama
queueConn.start();
TextMessage message = (TextMessage) queueReceiver.receive();
queueConn.close();
Queue queue = (Queue) ctx.lookup("queue/queue0");
QueueConnectionFactory connFactory = (QueueConnectionFactory) ctx.lookup("queue/connectionFactory");
QueueConnection queueConn = connFactory.createQueueConnection();
QueueSession queueSession = queueConn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
QueueReceiver queueReceiver = queueSession.createReceiver(queue);
Main asyncReceiver = new Main();
queueReceiver.setMessageListener(asyncReceiver);
queueConn.setExceptionListener(asyncReceiver);
queueConn.start();
System.out.print("waiting for messages");
for (int i = 0; i < 10; i++) {
Thread.sleep(1000);
System.out.print(".");
}
System.out.println();
queueConn.close();
}
public void onMessage(Message message){
TextMessage msg = (TextMessage) message;
try {
System.out.println("received: " + msg.getText());
} catch (JMSException ex) {
ex.printStackTrace();
}
}
public void onException(JMSException exception){
System.err.println("an error occurred: " + exception);
}