1
2
3
4
5
6
7
8
9
10
11 package org.mule.transport.jms.reliability;
12
13 import org.mule.transport.jms.integration.AbstractJmsFunctionalTestCase;
14 import org.mule.transport.jms.integration.JmsVendorConfiguration;
15 import org.mule.transport.jms.integration.activemq.ActiveMQJmsConfiguration;
16
17 import javax.jms.Connection;
18 import javax.jms.DeliveryMode;
19 import javax.jms.Destination;
20 import javax.jms.Message;
21 import javax.jms.MessageConsumer;
22 import javax.jms.MessageListener;
23 import javax.jms.MessageProducer;
24 import javax.jms.Session;
25
26 public abstract class AbstractJmsReliabilityTestCase extends AbstractJmsFunctionalTestCase
27 {
28 protected int acknowledgeMode = Session.AUTO_ACKNOWLEDGE;
29 protected int deliveryMode = DeliveryMode.PERSISTENT;
30
31
32 protected Connection connection;
33 protected Session session;
34 protected MessageConsumer consumer;
35
36 public AbstractJmsReliabilityTestCase()
37 {
38 setMultipleProviders(false);
39 }
40
41 @Override
42 protected void doTearDown() throws Exception
43 {
44 closeConsumer();
45 super.doTearDown();
46 }
47
48 protected void closeConsumer() throws Exception
49 {
50 if (consumer != null)
51 {
52 consumer.close();
53 consumer = null;
54 session.close();
55 session = null;
56 connection.close();
57 connection = null;
58 }
59 }
60
61 protected void putMessageOnQueue(String queueName) throws Exception
62 {
63 JmsVendorConfiguration jmsConfig = new ActiveMQJmsConfiguration();
64 Connection connection = null;
65 try
66 {
67 connection = jmsConfig.getConnection(false, false);
68 connection.start();
69 Session session = null;
70 try
71 {
72 session = connection.createSession(false, acknowledgeMode);
73 Destination destination = session.createQueue(queueName);
74 MessageProducer producer = null;
75 try
76 {
77 producer = session.createProducer(destination);
78 producer.setDeliveryMode(deliveryMode);
79 Message msg = session.createTextMessage(AbstractJmsFunctionalTestCase.DEFAULT_INPUT_MESSAGE);
80 msg.setJMSExpiration(0);
81 producer.send(msg);
82 }
83 finally
84 {
85 if (producer != null)
86 {
87 producer.close();
88 }
89 }
90 }
91 finally
92 {
93 if (session != null)
94 {
95 session.close();
96 }
97 }
98 }
99 finally
100 {
101 if (connection != null)
102 {
103 connection.close();
104 }
105 }
106 }
107
108 protected Message readMessageFromQueue(String queueName) throws Exception
109 {
110 if (consumer == null)
111 {
112 createConsumer(queueName);
113 }
114 return consumer.receive(getTimeout());
115 }
116
117 protected void listenOnQueue(String queueName, MessageListener listener) throws Exception
118 {
119 if (consumer == null)
120 {
121 createConsumer(queueName);
122 }
123 consumer.setMessageListener(listener);
124 }
125
126 protected void createConsumer(String queueName) throws Exception
127 {
128 connection = getConnection(false, false);
129 connection.start();
130 session = connection.createSession(false, acknowledgeMode);
131 consumer = session.createConsumer(session.createQueue(queueName));
132 }
133 }
134
135