use of javax.jms.JMSConsumer in project tomee by apache.
the class JMS2AMQTest method receive.
@Test
public void receive() throws InterruptedException {
final String text = TEXT + "2";
final AtomicReference<Throwable> error = new AtomicReference<>();
final CountDownLatch ready = new CountDownLatch(1);
final CountDownLatch over = new CountDownLatch(1);
new Thread() {
@Override
public void run() {
{
setName(JMS2AMQTest.class.getName() + ".receive#receiver");
}
try (final JMSContext context = cf.createContext()) {
try (final JMSConsumer consumer = context.createConsumer(destination2)) {
ready.countDown();
assertEquals(text, consumer.receiveBody(String.class, TimeUnit.MINUTES.toMillis(1)));
}
} catch (final Throwable ex) {
error.set(ex);
} finally {
over.countDown();
}
}
}.start();
ready.await(1, TimeUnit.MINUTES);
// just to ensure we called receive already
sleep(150);
// now send the message
try (final JMSContext context = cf.createContext()) {
context.createProducer().send(destination2, text);
} catch (final JMSRuntimeException ex) {
fail(ex.getMessage());
}
over.await(1, TimeUnit.MINUTES);
// ensure we got the message and no exception
final Throwable exception = error.get();
if (exception != null) {
exception.printStackTrace();
}
assertNull(exception == null ? "ok" : exception.getMessage(), exception);
}
use of javax.jms.JMSConsumer in project tomee by apache.
the class JMS2AMQTest method cdiListenerAPI.
@Test
public void cdiListenerAPI() throws InterruptedException {
final String text = TEXT + "4";
final AtomicReference<Throwable> error = new AtomicReference<>();
final CountDownLatch ready = new CountDownLatch(1);
final CountDownLatch over = new CountDownLatch(1);
new Thread() {
{
setName(JMS2AMQTest.class.getName() + ".cdiListenerAPI#receiver");
}
@Override
public void run() {
final ContextsService contextsService = WebBeansContext.currentInstance().getContextsService();
contextsService.startContext(RequestScoped.class, null);
try {
final JMSConsumer consumer = context.createConsumer(destination3);
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(final Message message) {
try {
assertEquals(text, message.getBody(String.class));
} catch (final Throwable e) {
error.set(e);
} finally {
over.countDown();
consumer.close();
}
}
});
ready.countDown();
} catch (final Throwable t) {
error.set(t);
} finally {
try {
over.await(1, TimeUnit.MINUTES);
} catch (final InterruptedException e) {
Thread.interrupted();
}
contextsService.endContext(RequestScoped.class, null);
}
}
}.start();
ready.await(1, TimeUnit.MINUTES);
// now send the message
try (final JMSContext context = cf.createContext()) {
context.createProducer().send(destination3, text);
} catch (final JMSRuntimeException ex) {
fail(ex.getMessage());
}
over.await(1, TimeUnit.MINUTES);
// ensure we got the message and no exception
final Throwable exception = error.get();
if (exception != null) {
exception.printStackTrace();
}
assertNull(exception == null ? "ok" : exception.getMessage(), exception);
}
Aggregations