Search in sources :

Example 36 with Session

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);
    }
}
Also used : MessageConsumer(javax.jms.MessageConsumer) Session(javax.jms.Session)

Example 37 with Session

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();
    }
}
Also used : Destination(javax.jms.Destination) ConnectionFactory(javax.jms.ConnectionFactory) MessageConsumer(javax.jms.MessageConsumer) MapMessage(javax.jms.MapMessage) Connection(javax.jms.Connection) MessageProducer(javax.jms.MessageProducer) Queue(javax.jms.Queue) TextMessage(javax.jms.TextMessage) Session(javax.jms.Session) Test(org.junit.Test)

Example 38 with Session

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);
    }
}
Also used : Destination(javax.jms.Destination) MapMessage(javax.jms.MapMessage) Connection(javax.jms.Connection) JMSException(javax.jms.JMSException) MessageProducer(javax.jms.MessageProducer) Session(javax.jms.Session)

Example 39 with Session

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");
    }
}
Also used : MessageConsumer(javax.jms.MessageConsumer) Message(javax.jms.Message) TextMessage(javax.jms.TextMessage) Connection(javax.jms.Connection) ConnectionFactory(javax.jms.ConnectionFactory) TreeSet(java.util.TreeSet) MessageProducer(javax.jms.MessageProducer) ModelNode(org.jboss.dmr.ModelNode) Queue(javax.jms.Queue) TextMessage(javax.jms.TextMessage) Session(javax.jms.Session) Test(org.junit.Test)

Example 40 with Session

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();
        }
    }
}
Also used : MessageConsumer(javax.jms.MessageConsumer) Message(javax.jms.Message) Connection(javax.jms.Connection) TemporaryQueue(javax.jms.TemporaryQueue) MessageProducer(javax.jms.MessageProducer) Session(javax.jms.Session)

Aggregations

Session (javax.jms.Session)281 MessageProducer (javax.jms.MessageProducer)131 Connection (javax.jms.Connection)120 Test (org.junit.Test)110 Message (javax.jms.Message)86 TextMessage (javax.jms.TextMessage)84 JMSException (javax.jms.JMSException)80 MessageConsumer (javax.jms.MessageConsumer)64 Destination (javax.jms.Destination)46 Topic (javax.jms.Topic)40 ConnectionFactory (javax.jms.ConnectionFactory)37 ObjectMessage (javax.jms.ObjectMessage)28 Queue (javax.jms.Queue)26 StubTextMessage (org.springframework.jms.StubTextMessage)20 QueueSession (javax.jms.QueueSession)16 MessagingMessageListenerAdapter (org.springframework.jms.listener.adapter.MessagingMessageListenerAdapter)16 MessageCreator (org.springframework.jms.core.MessageCreator)15 BytesMessage (javax.jms.BytesMessage)14 MapMessage (javax.jms.MapMessage)12 ActiveMQConnectionFactory (org.apache.activemq.ActiveMQConnectionFactory)12