]> git.somenet.org - pub/jan/sbc.git/blob - src/main/java/at/ac/tuwien/sbc/valesriegler/jms/nac/JMSNAC.java
[JMS] added naming service + integrated with PG.
[pub/jan/sbc.git] / src / main / java / at / ac / tuwien / sbc / valesriegler / jms / nac / JMSNAC.java
1 package at.ac.tuwien.sbc.valesriegler.jms.nac;
2
3 import javax.jms.Connection;
4 import javax.jms.DeliveryMode;
5 import javax.jms.JMSException;
6 import javax.jms.MessageConsumer;
7 import javax.jms.MessageProducer;
8 import javax.jms.Session;
9
10 import org.apache.activemq.ActiveMQConnectionFactory;
11 import org.slf4j.Logger;
12 import org.slf4j.LoggerFactory;
13
14 import at.ac.tuwien.sbc.valesriegler.jms.nac.actions.AbstractNACMsg;
15
16 /**
17  * JMS "Naming And Control". This class registers the listener and initializes the Broker connection.
18  * 
19  * @author jan
20  * 
21  */
22 public class JMSNAC {
23         private static final Logger log = LoggerFactory.getLogger(JMSNAC.class);
24         public static final String JMS_NAC_SERVICE = "tcp://localhost:61610?jms.prefetchPolicy.all=1";
25         public static final String JMS_NAC_TOPIC = "NAC";
26         private Connection connection;
27
28         public JMSNAC(AbstractJMSNACMsgListener listener) {
29                 log.info("Initialising Naming and control module.");
30                 listener.setJmsnac(this);
31
32                 try {
33                         ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(JMS_NAC_SERVICE);
34                         connection = connectionFactory.createConnection();
35                         connection.start();
36
37                         Session sessWantToSit = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
38                         MessageConsumer consWantToSit = sessWantToSit.createConsumer(sessWantToSit.createTopic(JMS_NAC_TOPIC));
39                         consWantToSit.setMessageListener(listener);
40                 } catch (JMSException e) {
41                         log.error("EXCEPTION!", e);
42                 }
43         }
44         public void sendNACMsg(AbstractNACMsg msg) throws JMSException {
45                 Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
46                 MessageProducer prod = session.createProducer(session.createTopic(JMS_NAC_TOPIC));
47                 prod.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
48                 prod.send(session.createObjectMessage(msg));
49                 session.close();
50         }
51 }