1 package at.ac.tuwien.sbc.valesriegler.waiter.jms;
3 import java.io.Serializable;
5 import javax.jms.Connection;
6 import javax.jms.MessageConsumer;
7 import javax.jms.Session;
9 import org.apache.activemq.ActiveMQConnectionFactory;
10 import org.slf4j.Logger;
11 import org.slf4j.LoggerFactory;
13 import at.ac.tuwien.sbc.valesriegler.common.Util;
14 import at.ac.tuwien.sbc.valesriegler.waiter.jms.messageListeners.CookedOrders;
15 import at.ac.tuwien.sbc.valesriegler.waiter.jms.messageListeners.WantToOrder;
16 import at.ac.tuwien.sbc.valesriegler.waiter.jms.messageListeners.WantToPay;
17 import at.ac.tuwien.sbc.valesriegler.waiter.jms.messageListeners.WantToSitAtTable;
20 * A waiter is a person who does all the stuff and gets lousy tips in return.
21 * TODO: might want to split this class into multiple, to allow for abstraction.
26 public class JMSWaiter implements Serializable {
27 private static final Logger log = LoggerFactory.getLogger(JMSWaiter.class);
30 public JMSWaiter(int id) {
32 log.info("I AM A WAITER WITH ID {}", id);
35 // Connecting to the Broker and to the output queue
36 ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(Util.JMS_CONNECTSTRING);
37 Connection connection = connectionFactory.createConnection();
40 Session sessWantToSit = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
41 MessageConsumer consWantToSit = sessWantToSit.createConsumer(sessWantToSit.createQueue("WantToSitAtTable"));
42 consWantToSit.setMessageListener(new WantToSitAtTable(this));
44 Session sessWantToOrder = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
45 MessageConsumer consWantToOrder = sessWantToOrder.createConsumer(sessWantToOrder.createQueue("WantToOrder"));
46 consWantToOrder.setMessageListener(new WantToOrder(this));
48 Session sessCookedOrders = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
49 MessageConsumer consCookedOrders = sessCookedOrders.createConsumer(sessCookedOrders.createQueue("CookedOrders"));
50 consCookedOrders.setMessageListener(new CookedOrders(this));
52 Session sessWantToPay = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
53 MessageConsumer consWantToPay = sessWantToPay.createConsumer(sessWantToPay.createQueue("WantToPay"));
54 consWantToPay.setMessageListener(new WantToPay(this));
56 } catch (Exception e) {
57 log.error("Caught: ", e);
62 public String toString() {
63 return "Waiter [id=" + id + "]";