Skip to content

Commit b635b76

Browse files
committed
Updated JMS message receive timeouts to 10 seconds
1 parent 50fe33a commit b635b76

8 files changed

Lines changed: 39 additions & 29 deletions

File tree

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<actions>
3+
<action>
4+
<actionName>test</actionName>
5+
<packagings>
6+
<packaging>*</packaging>
7+
</packagings>
8+
<goals>
9+
<goal>test</goal>
10+
</goals>
11+
</action>
12+
</actions>

jms/send-receive/src/main/java/org/javaee7/jms/send/receive/classic/ClassicMessageReceiver.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,15 +64,15 @@ public class ClassicMessageReceiver {
6464
@Resource(mappedName = Resources.CLASSIC_QUEUE)
6565
Queue demoQueue;
6666

67-
public String receiveMessage() {
67+
public String receiveMessage(int timeoutInMillis) {
6868
String response = null;
6969
Connection connection = null;
7070
try {
7171
connection = connectionFactory.createConnection();
7272
connection.start();
7373
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
7474
MessageConsumer messageConsumer = session.createConsumer(demoQueue);
75-
Message message = messageConsumer.receive(5000);
75+
Message message = messageConsumer.receive(timeoutInMillis);
7676
response = message.getBody(String.class);
7777
} catch (JMSException ex) {
7878
ex.printStackTrace();

jms/send-receive/src/main/java/org/javaee7/jms/send/receive/simple/MessageReceiverSync.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,17 +64,17 @@ public class MessageReceiverSync {
6464
@Resource(mappedName = Resources.SYNC_CONTAINER_MANAGED_QUEUE)
6565
Queue myQueue;
6666

67-
public String receiveMessage() {
68-
return context.createConsumer(myQueue).receiveBody(String.class, 1000);
67+
public String receiveMessage(int timeoutInMillis) {
68+
return context.createConsumer(myQueue).receiveBody(String.class, timeoutInMillis);
6969
}
7070

71-
public void receiveAll() {
71+
public void receiveAll(int timeoutInMillis) {
7272
System.out.println("--> Receiving redundant messages ...");
7373
try {
7474
QueueBrowser browser = context.createBrowser(myQueue);
7575
while (browser.getEnumeration().hasMoreElements()) {
7676
System.out.println("--> here is one");
77-
context.createConsumer(myQueue).receiveBody(String.class, 1000);
77+
context.createConsumer(myQueue).receiveBody(String.class, timeoutInMillis);
7878
}
7979
} catch (JMSException ex) {
8080
Logger.getLogger(MessageReceiverSync.class.getName()).log(Level.SEVERE, null, ex);

jms/send-receive/src/main/java/org/javaee7/jms/send/receive/simple/appmanaged/MessageReceiverAppManaged.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ public class MessageReceiverAppManaged {
1919
@Resource(mappedName = Resources.SYNC_APP_MANAGED_QUEUE)
2020
Queue myQueue;
2121

22-
public String receiveMessage() {
22+
public String receiveMessage(int timeoutInMillis) {
2323
try (JMSContext context = factory.createContext()) {
24-
return context.createConsumer(myQueue).receiveBody(String.class, 1000);
24+
return context.createConsumer(myQueue).receiveBody(String.class, timeoutInMillis);
2525
}
2626
}
2727
}

jms/send-receive/src/test/java/org/javaee7/jms/send/receive/SyncTest.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.javaee7.jms.send.receive;
22

3-
import java.util.Arrays;
43
import org.javaee7.jms.send.receive.classic.ClassicMessageSender;
54
import org.javaee7.jms.send.receive.classic.ClassicMessageReceiver;
65
import org.junit.Test;
@@ -16,7 +15,6 @@
1615
import org.jboss.arquillian.junit.Arquillian;
1716
import org.jboss.shrinkwrap.api.ShrinkWrap;
1817
import org.jboss.shrinkwrap.api.spec.WebArchive;
19-
import org.junit.Before;
2018
import org.junit.runner.RunWith;
2119

2220
/**
@@ -42,43 +40,45 @@ public class SyncTest {
4240

4341
@EJB
4442
MessageReceiverAppManaged appManagedReceiver;
43+
44+
private final int messageReceiveTimeoutInMillis = 10000;
4545

4646
@Test
4747
public void testClassicApi() {
4848
String message = "The test message over JMS 1.1 API";
4949
classicSender.sendMessage(message);
5050

51-
assertEquals(message, classicReceiver.receiveMessage());
51+
assertEquals(message, classicReceiver.receiveMessage(messageReceiveTimeoutInMillis));
5252
}
5353

5454
@Test
5555
public void testContainerManagedJmsContext() {
5656
String message = "Test message over container-managed JMSContext";
5757
simpleSender.sendMessage(message);
5858

59-
assertEquals(message, simpleReceiver.receiveMessage());
59+
assertEquals(message, simpleReceiver.receiveMessage(messageReceiveTimeoutInMillis));
6060
}
6161

6262
@Test
6363
public void testAppManagedJmsContext() {
6464
String message = "The test message over app-managed JMSContext";
6565
appManagedSender.sendMessage(message);
6666

67-
assertEquals(message, appManagedReceiver.receiveMessage());
67+
assertEquals(message, appManagedReceiver.receiveMessage(messageReceiveTimeoutInMillis));
6868
}
6969

7070
@Test
7171
public void testMultipleSendAndReceive() {
7272
simpleSender.sendMessage("1");
7373
simpleSender.sendMessage("2");
74-
assertEquals("1", simpleReceiver.receiveMessage());
75-
assertEquals("2", simpleReceiver.receiveMessage());
74+
assertEquals("1", simpleReceiver.receiveMessage(messageReceiveTimeoutInMillis));
75+
assertEquals("2", simpleReceiver.receiveMessage(messageReceiveTimeoutInMillis));
7676
simpleSender.sendMessage("3");
7777
simpleSender.sendMessage("4");
7878
simpleSender.sendMessage("5");
79-
assertEquals("3", simpleReceiver.receiveMessage());
80-
assertEquals("4", simpleReceiver.receiveMessage());
81-
assertEquals("5", simpleReceiver.receiveMessage());
79+
assertEquals("3", simpleReceiver.receiveMessage(messageReceiveTimeoutInMillis));
80+
assertEquals("4", simpleReceiver.receiveMessage(messageReceiveTimeoutInMillis));
81+
assertEquals("5", simpleReceiver.receiveMessage(messageReceiveTimeoutInMillis));
8282
}
8383

8484
@Deployment

jms/send-receive/src/test/java/org/javaee7/jms/send/receive/mdb/AsyncTest.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
package org.javaee7.jms.send.receive.mdb;
22

33
import org.javaee7.jms.send.receive.simple.MessageSenderAsync;
4-
import org.javaee7.jms.send.receive.mdb.MessageReceiverAsync;
5-
import org.javaee7.jms.send.receive.simple.MessageSenderSync;
6-
import org.javaee7.jms.send.receive.simple.MessageReceiverSync;
74
import org.junit.Test;
8-
import static org.junit.Assert.*;
95

106
import java.io.File;
117

@@ -27,11 +23,13 @@ public class AsyncTest {
2723

2824
@EJB
2925
MessageSenderAsync asyncSender;
26+
27+
private final int messageReceiveTimeoutInMillis = 10000;
3028

3129
@Test
3230
public void testAsync() throws Exception {
3331
asyncSender.sendMessage("Fire!");
34-
ReceptionSynchronizer.waitFor(MessageReceiverAsync.class, "onMessage");
32+
ReceptionSynchronizer.waitFor(MessageReceiverAsync.class, "onMessage" , messageReceiveTimeoutInMillis);
3533
// unless we timed out, the test passes
3634
}
3735

jms/send-receive/src/test/java/org/javaee7/jms/send/receive/mdb/ReceptionSynchronizer.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ void registerInvocation(Method m) {
6363
}
6464
}
6565

66-
public static void waitFor(Class<?> clazz, String methodName) throws InterruptedException {
66+
public static void waitFor(Class<?> clazz, String methodName, int timeoutInMillis) throws InterruptedException {
6767
Method method = null;
6868
for (Method declaredMethod : clazz.getDeclaredMethods()) {
6969
if (methodName.equals(declaredMethod.getName())) {
@@ -77,10 +77,10 @@ public static void waitFor(Class<?> clazz, String methodName) throws Interrupted
7777
if (method == null) {
7878
throw new IllegalArgumentException(methodName + " not found in " + clazz.getSimpleName());
7979
}
80-
waitFor(method);
80+
waitFor(method, timeoutInMillis);
8181
}
8282

83-
private static void waitFor(Method method) throws InterruptedException {
83+
private static void waitFor(Method method, int timeoutInMillis) throws InterruptedException {
8484
CountDownLatch latch;
8585
synchronized (barrier) {
8686
if (barrier.containsKey(method)) {
@@ -95,8 +95,8 @@ private static void waitFor(Method method) throws InterruptedException {
9595
barrier.put(method, latch);
9696
}
9797
}
98-
if (!latch.await(2, TimeUnit.SECONDS)) {
99-
throw new AssertionError("Expected method has not been invoked");
98+
if (!latch.await(timeoutInMillis, TimeUnit.MILLISECONDS)) {
99+
throw new AssertionError("Expected method has not been invoked in " + timeoutInMillis + "ms");
100100
}
101101
}
102102

jms/send-receive/src/test/java/org/javaee7/jms/send/receive/mdb/ReceptionSynchronizerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public void run() {
2626
cut.registerInvocation(method);
2727
}
2828
}, 1, TimeUnit.SECONDS);
29-
ReceptionSynchronizer.waitFor(ReceptionSynchronizerTest.class, "testWaiting");
29+
ReceptionSynchronizer.waitFor(ReceptionSynchronizerTest.class, "testWaiting", 2000);
3030
long waitTime = System.currentTimeMillis() - startTime;
3131
assertTrue("Waited more than 950ms", waitTime > 950);
3232
assertTrue("Waited no longer than 1050ms", waitTime < 1050);

0 commit comments

Comments
 (0)