Nachfolgend ein einfaches Beispiel, wie der ISA Messaging Service genutzt werden kann.
- Es wird eine Topic Queue Verbindung mit einem Nachrichtenfilter angelegt und ein anonymer MessageReceiver als Empfänger gesetzt. Letzteres verhindert, dass die MessageReceiver Schnittstelle Teil der öffentlichen Schnittstelle des TestModuls wird.
- Es wird eine Senderverbindung mit einer Queue aufgebaut und N Nachrichten versendet.
Der Code ist für Client und Server gleich.
//MANIFEST.MF[ // PlugIn-Name: com.my.MessagingTest // PlugIn-Imports: isa.Core[version=1.0.0.DEV-SNAPSHOT]; // isa.Messaging[version=1.0.0.DEV-SNAPSHOT] //] package com.my; import isa.MessagingIFace; import isa.MessageReceiver; import isa.common.QueueObject; import isa.common.QueueSender; /** */ public class MessagingTest { @Service() protected MessagingIFace messaging = null; protected QueueObject topicQueue = null; /** */ public MessagingTest () { } /** */ protected void onInstanceActivation(Object pConfig)throws Exception{ String filter = "receiver='all' OR receiver='me'"; String topicName = "com.my.MessagingTopic" topicQueue = messaging.getTopicQueue(topicName, filter, new MessageReceiver() { public void processMessage(Object pMsg){ System.out.println("Topic Message received: "+pMsg); } } ); } /** */ protected void onInstanceDeactivation(Object pConfig)throws Exception{ if(topicQueue!=null){ topicQueue.disconnect(false); } } /** */ protected void sendMessages(List pMessages){ QueueSender sender = null; try{ sender = messaging.getQueueSender("com.my.QueueName"); Iterator iter = pMessages.iterator(); while(iter.hasNext()){ sender.send(iter.next(), ""); } }catch(Exception e){ e.printStackTrace(); }finally{ sender.disconnect(false); } } }
Das Beispiel zeigt auch wie nahe das ISA Modulkonzept an das traditionelle Import Konzept von Java angelehnt ist. Dabei werden einfach an Stelle von Klassen und Paketen – Module in der Manifestdatei importiert. An der Programmierung selbst ändert sich nichts.