use of javax.jms.Session in project ignite by apache.
the class JmsStreamer method initializeJmsObjectsForQueue.
private void initializeJmsObjectsForQueue() throws JMSException {
for (int i = 0; i < threads; i++) {
Session session = connection.createSession(transacted, Session.AUTO_ACKNOWLEDGE);
if (destination == null)
destination = session.createQueue(destinationName);
MessageConsumer consumer = session.createConsumer(destination);
IgniteJmsMessageListener messageListener = new IgniteJmsMessageListener(session, false);
consumer.setMessageListener(messageListener);
consumers.add(consumer);
sessions.add(session);
listeners.add(messageListener);
}
}
use of javax.jms.Session in project wildfly by wildfly.
the class EnvEntryTestCase method testEnvEntriesMDB.
@Test
public void testEnvEntriesMDB() throws Exception {
ConnectionFactory factory = (ConnectionFactory) ctx.lookup("ConnectionFactory");
Connection con = factory.createConnection();
try {
Destination dest = (Destination) ctx.lookup("java:jboss/queue/testEnvEntry");
Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer producer = session.createProducer(dest);
Queue replyQueue = session.createTemporaryQueue();
MessageConsumer consumer = session.createConsumer(replyQueue);
con.start();
TextMessage msg = session.createTextMessage();
msg.setJMSReplyTo(replyQueue);
msg.setText("This is message one");
producer.send(msg);
MapMessage replyMsg = (MapMessage) consumer.receive(5000);
Assert.assertNotNull(replyMsg);
Assert.assertEquals(16, replyMsg.getInt("maxExceptions"));
Assert.assertEquals(12, replyMsg.getInt("numExceptions"));
Assert.assertEquals(7, replyMsg.getInt("minExceptions"));
} finally {
con.close();
}
}
use of javax.jms.Session in project wildfly by wildfly.
the class TestEnvEntryMDBean method onMessage.
public void onMessage(Message msg) {
log.trace("OnMessage working...");
try {
Destination destination = msg.getJMSReplyTo();
Connection conn = connectionFactory.createConnection();
try {
Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer replyProducer = session.createProducer(destination);
MapMessage replyMsg = session.createMapMessage();
replyMsg.setJMSCorrelationID(msg.getJMSMessageID());
replyMsg.setInt("maxExceptions", maxExceptions);
replyMsg.setInt("numExceptions", numExceptions);
replyMsg.setInt("minExceptions", minExceptions);
// System.err.println("reply to: " + destination);
// System.err.println("maxExceptions: " + maxExceptions);
// System.err.println("numExceptions: " + numExceptions);
// System.err.println("minExceptions: " + minExceptions);
replyProducer.send(replyMsg);
} finally {
conn.close();
}
} catch (JMSException e) {
throw new RuntimeException(e);
}
}
use of javax.jms.Session in project wildfly by wildfly.
the class SendMessagesTestCase method testShutdown.
@Test
public void testShutdown(@ArquillianResource @OperateOnDeployment("singleton") ManagementClient client) throws Exception {
Connection connection = null;
try {
deployer.deploy("mdb");
ConnectionFactory cf = (ConnectionFactory) ctx.lookup("jms/RemoteConnectionFactory");
Queue queue = (Queue) ctx.lookup(QUEUE_SEND);
connection = cf.createConnection("guest", "guest");
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue replyQueue = session.createTemporaryQueue();
MessageProducer sender = session.createProducer(queue);
MessageConsumer receiver = session.createConsumer(replyQueue);
connection.start();
// we do not assume message order since the 1st message will be redelivered
// after redeployment (as the MDB is interrupted on 1st delivery)
Set<String> expected = new TreeSet<String>();
sendMessage(session, sender, replyQueue, "await");
expected.add("Reply: await");
// synchronize receiving message
int awaitInt = awaitSingleton("await before undeploy");
log.debug("testsuite: first awaitSingleton() returned: " + awaitInt);
Future<?> undeployed = executor.submit(undeployTask());
for (int i = 1; i <= 50; i++) {
String msg = this.getClass().getSimpleName() + " 50loop: " + i;
// should be bounced by BlockContainerShutdownInterceptor
sendMessage(session, sender, replyQueue, msg);
expected.add("Reply: " + msg);
}
log.debug("Sent 50 messages during MDB is undeploying");
// synchronize with transaction timeout
awaitInt = awaitSingleton("await after undeploy");
log.debug("testsuite: second awaitSingleton() returned: " + awaitInt);
undeployed.get(UNDEPLOYED_WAIT_S, SECONDS);
// deploying via management client, arquillian deployer does not work for some reason
final ModelNode deployAddr = new ModelNode();
deployAddr.get(ClientConstants.OP_ADDR).add("deployment", MESSAGE_DRIVEN_BEAN + ".jar");
deployAddr.get(ClientConstants.OP).set("deploy");
applyUpdate(deployAddr, managementClient.getControllerClient());
for (int i = 1; i <= 10; i++) {
String msg = this.getClass().getSimpleName() + "10loop: " + i;
sendMessage(session, sender, replyQueue, msg);
expected.add("Reply: " + msg);
}
log.debug("Sent 10 more messages");
Set<String> received = new TreeSet<String>();
for (int i = 1; i <= (1 + 50 + 10 + 1); i++) {
Message msg = receiver.receive(SECONDS.toMillis(RECEIVE_WAIT_S));
assertNotNull("did not receive message with ordered number " + i + " in " + SECONDS.toMillis(RECEIVE_WAIT_S) + " seconds", msg);
String text = ((TextMessage) msg).getText();
received.add(text);
log.trace(i + ": " + text);
}
assertNull(receiver.receiveNoWait());
assertEquals(expected, received);
} finally {
if (connection != null) {
connection.close();
}
deployer.undeploy("mdb");
}
}
use of javax.jms.Session in project wildfly by wildfly.
the class MDBTestCase method doDeliveryActive.
private void doDeliveryActive(Destination destination, String mdbName) throws Exception {
// ReplyingMDB has been deployed with deliveryActive set to false
assertMDBDeliveryIsActive(mdbName, false);
Connection connection = null;
try {
connection = cf.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
TemporaryQueue replyQueue = session.createTemporaryQueue();
// send a message to the MDB
MessageProducer producer = session.createProducer(destination);
Message message = session.createMessage();
message.setJMSReplyTo(replyQueue);
producer.send(message);
// the MDB did not reply to the message because its delivery is not active
MessageConsumer consumer = session.createConsumer(replyQueue);
Message reply = consumer.receive(TIMEOUT);
assertNull(reply);
executeMDBOperation(mdbName, "start-delivery");
assertMDBDeliveryIsActive(mdbName, true);
// WFLY-4470 check duplicate message when start delivery twice. Last assertNull(reply) should still be valid
executeMDBOperation(mdbName, "start-delivery");
// the message was delivered to the MDB which replied
reply = consumer.receive(TIMEOUT);
assertNotNull(reply);
assertEquals(message.getJMSMessageID(), reply.getJMSCorrelationID());
executeMDBOperation(mdbName, "stop-delivery");
assertMDBDeliveryIsActive(mdbName, false);
// send again a message to the MDB
message = session.createMessage();
message.setJMSReplyTo(replyQueue);
producer.send(message);
// the MDB did not reply to the message because its delivery is not active
reply = consumer.receive(TIMEOUT);
assertNull(reply);
} finally {
if (connection != null) {
connection.close();
}
}
}
Aggregations