try { queueConnection = connectionFactory.createConnection(); queueSession = queueConnection.createSession(transacted, Session.AUTO_ACKNOWLEDGE); producer = queueSession.createProducer(queue); producer.setPriority(priority); producer.send(message); } catch (Exception e) { throw new RuntimeException("Error when sending JMS message with working memory event", e); queueConnection.close(); } catch (JMSException e) { logger.warn("Error when closing queue connection", e);
public static WrappedMessageProducer createMessageProducer(final ProcessContext context, final boolean transacted) throws JMSException { Connection connection = null; Session jmsSession = null; try { connection = JmsFactory.createConnection(context); jmsSession = JmsFactory.createSession(context, connection, transacted); final Destination destination = getDestination(context); final MessageProducer messageProducer = jmsSession.createProducer(destination); return new WrappedMessageProducer(connection, jmsSession, messageProducer); } catch (JMSException e) { if (connection != null) { connection.close(); } if (jmsSession != null) { jmsSession.close(); } throw e; } }
@Test public void testWithConnectionFactory() throws JMSException { ConnectionFactory cf = mock(ConnectionFactory.class); Connection con = mock(Connection.class); given(cf.createConnection()).willReturn(con); SingleConnectionFactory scf = new SingleConnectionFactory(cf); Connection con1 = scf.createConnection(); Connection con2 = scf.createConnection(); con1.start(); con2.start(); con1.close(); con2.close(); scf.destroy(); // should trigger actual close verify(con).start(); verify(con).stop(); verify(con).close(); verifyNoMoreInteractions(con); }
@Test public void testParticipatingTransactionWithCommit() throws JMSException { ConnectionFactory cf = mock(ConnectionFactory.class); given(con.createSession(true, Session.AUTO_ACKNOWLEDGE)).willReturn(session); verify(con).close();
@Test public void testProducerCallback() throws Exception { JmsTemplate template = createTemplate(); template.setConnectionFactory(this.connectionFactory); MessageProducer messageProducer = mock(MessageProducer.class); given(this.session.createProducer(null)).willReturn(messageProducer); given(messageProducer.getPriority()).willReturn(4); template.execute((ProducerCallback<Void>) (session1, producer) -> { session1.getTransacted(); producer.getPriority(); return null; }); verify(messageProducer).close(); verify(this.session).close(); verify(this.connection).close(); }
protected void doTestJmsException(JMSException original, Class<? extends JmsException> thrownExceptionClass) throws Exception { JmsTemplate template = createTemplate(); template.setConnectionFactory(this.connectionFactory); template.setMessageConverter(new SimpleMessageConverter()); String s = "Hello world"; MessageProducer messageProducer = mock(MessageProducer.class); TextMessage textMessage = mock(TextMessage.class); reset(this.session); given(this.session.createProducer(this.queue)).willReturn(messageProducer); given(this.session.createTextMessage("Hello world")).willReturn(textMessage); willThrow(original).given(messageProducer).send(textMessage); try { template.convertAndSend(this.queue, s); fail("Should have thrown JmsException"); } catch (JmsException wrappedEx) { // expected assertEquals(thrownExceptionClass, wrappedEx.getClass()); assertEquals(original, wrappedEx.getCause()); } verify(messageProducer).close(); verify(this.session).close(); verify(this.connection).close(); }
TemporaryQueue replyDestination = mock(TemporaryQueue.class); MessageProducer messageProducer = mock(MessageProducer.class); given(localSession.createProducer(this.queue)).willReturn(messageProducer); given(localSession.createTemporaryQueue()).willReturn(replyDestination); given(localSession.createConsumer(replyDestination)).willReturn(messageConsumer); verify(this.connection).start(); verify(this.connection).close(); verify(localSession).close(); verify(messageConsumer).close();
given(this.session.createConsumer(this.queue, messageSelector ? selectorString : null)).willReturn(messageConsumer); verify(this.connection).start(); verify(this.connection).close(); if (useTransactedTemplate()) { verify(this.session).commit();
/** * Recreates the connection. * * @throws JMSException */ protected void reconnect() throws Exception { if (connection != null) { // Close the prev connection. connection.close(); } session = null; connection = resourceProvider.createConnection(connectionFactory); reconnectSession(); connection.start(); }
private void unsubscribe(final String url, final String username, final String password, final String subscriptionId, final String jmsProvider, final int timeoutMillis) throws JMSException { final Connection connection; if (username == null && password == null) { connection = JmsFactory.createConnectionFactory(url, timeoutMillis, jmsProvider).createConnection(); } else { connection = JmsFactory.createConnectionFactory(url, timeoutMillis, jmsProvider).createConnection(username, password); } Session session = null; try { connection.setClientID(subscriptionId); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); session.unsubscribe(subscriptionId); getLogger().info("Successfully unsubscribed from {}, Subscription Identifier {}", new Object[]{url, subscriptionId}); } finally { if (session != null) { try { session.close(); } catch (final Exception e1) { getLogger().warn("Unable to close session with JMS Server due to {}; resources may not be cleaned up appropriately", new Object[]{e1}); } } try { connection.close(); } catch (final Exception e1) { getLogger().warn("Unable to close connection to JMS Server due to {}; resources may not be cleaned up appropriately", new Object[]{e1}); } } }
try { queueConnection = connectionFactory.createConnection(); queueSession = queueConnection.createSession(transacted, Session.AUTO_ACKNOWLEDGE); message.setIntProperty("EventType", eventType); message.setStringProperty("LogType", "Process"); producer = queueSession.createProducer(queue); producer.setPriority(priority); producer.send(message); } catch (Exception e) { throw new RuntimeException("Error when sending JMS message with working memory event", e); queueConnection.close(); } catch (JMSException e) { logger.warn("Error when closing queue connection", e);
@Test public void testWithConnection() throws JMSException { Connection con = mock(Connection.class); SingleConnectionFactory scf = new SingleConnectionFactory(con); Connection con1 = scf.createConnection(); con1.start(); con1.stop(); con1.close(); Connection con2 = scf.createConnection(); con2.start(); con2.stop(); con2.close(); scf.destroy(); // should trigger actual close verify(con, times(2)).start(); verify(con, times(2)).stop(); verify(con).close(); verifyNoMoreInteractions(con); }
@Test public void testTransactionCommit() throws JMSException { ConnectionFactory cf = mock(ConnectionFactory.class); Connection con = mock(Connection.class); final Session session = mock(Session.class); given(cf.createConnection()).willReturn(con); given(con.createSession(true, Session.AUTO_ACKNOWLEDGE)).willReturn(session); JmsTransactionManager tm = new JmsTransactionManager(cf); TransactionStatus ts = tm.getTransaction(new DefaultTransactionDefinition()); JmsTemplate jt = new JmsTemplate(cf); jt.execute(new SessionCallback<Void>() { @Override public Void doInJms(Session sess) { assertTrue(sess == session); return null; } }); tm.commit(ts); verify(session).commit(); verify(session).close(); verify(con).close(); }
@Test public void testProducerCallbackWithIdAndTimestampDisabled() throws Exception { JmsTemplate template = createTemplate(); template.setConnectionFactory(this.connectionFactory); template.setMessageIdEnabled(false); template.setMessageTimestampEnabled(false); MessageProducer messageProducer = mock(MessageProducer.class); given(this.session.createProducer(null)).willReturn(messageProducer); given(messageProducer.getPriority()).willReturn(4); template.execute((ProducerCallback<Void>) (session1, producer) -> { session1.getTransacted(); producer.getPriority(); return null; }); verify(messageProducer).setDisableMessageID(true); verify(messageProducer).setDisableMessageTimestamp(true); verify(messageProducer).close(); verify(this.session).close(); verify(this.connection).close(); }
TextMessage textMessage = mock(TextMessage.class); given(this.session.createProducer(this.queue)).willReturn(messageProducer); given(this.session.createTextMessage("just testing")).willReturn(textMessage); verify(messageProducer).send(textMessage); verify(messageProducer).send(textMessage, this.qosSettings.getDeliveryMode(), this.qosSettings.getPriority(), this.qosSettings.getTimeToLive()); verify(this.connection).close();
public List<Message> receive(Queue queue) throws Exception { List<Message> messages = new ArrayList<Message>(); Connection qconnetion = factory.createConnection(); Session qsession = qconnetion.createSession(true, QueueSession.AUTO_ACKNOWLEDGE); MessageConsumer consumer = qsession.createConsumer(queue); qconnetion.start(); Message m = null; while ((m = consumer.receiveNoWait()) != null) { messages.add(m); } consumer.close(); qsession.close(); qconnetion.close(); return messages; } }
@Test public void testWithConnectionFactoryAndClientId() throws JMSException { ConnectionFactory cf = mock(ConnectionFactory.class); Connection con = mock(Connection.class); given(cf.createConnection()).willReturn(con); SingleConnectionFactory scf = new SingleConnectionFactory(cf); scf.setClientId("myId"); Connection con1 = scf.createConnection(); Connection con2 = scf.createConnection(); con1.start(); con2.start(); con1.close(); con2.close(); scf.destroy(); // should trigger actual close verify(con).setClientID("myId"); verify(con).start(); verify(con).stop(); verify(con).close(); verifyNoMoreInteractions(con); }
@Test public void testTransactionRollback() throws JMSException { ConnectionFactory cf = mock(ConnectionFactory.class); Connection con = mock(Connection.class); final Session session = mock(Session.class); given(cf.createConnection()).willReturn(con); given(con.createSession(true, Session.AUTO_ACKNOWLEDGE)).willReturn(session); JmsTransactionManager tm = new JmsTransactionManager(cf); TransactionStatus ts = tm.getTransaction(new DefaultTransactionDefinition()); JmsTemplate jt = new JmsTemplate(cf); jt.execute(new SessionCallback<Void>() { @Override public Void doInJms(Session sess) { assertTrue(sess == session); return null; } }); tm.rollback(ts); verify(session).rollback(); verify(session).close(); verify(con).close(); }
try { connection = cf.createConnection(userName, password); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer producer = session.createProducer(dest); ActiveMQTextMessage msg = (ActiveMQTextMessage) session.createTextMessage(body); producer.send(msg); connection.close();