try { queueConnection = connectionFactory.createConnection(); queueSession = queueConnection.createSession(transacted, Session.AUTO_ACKNOWLEDGE); TextMessage message = queueSession.createTextMessage(eventXml); message.setStringProperty("LogType", "Task"); 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); queueSession.close(); } catch (JMSException e) { logger.warn("Error when closing queue session", 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; } }
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; } }
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}); } } }
@Test public void testSendMoreThanOnce() throws Exception { prepareMessage(message); session.close(); session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); queueProd = session.createProducer(queue1); queueProd.setDeliveryMode(DeliveryMode.NON_PERSISTENT); queueCons = session.createConsumer(queue1); queueProd.send(message); queueProd.send(message); queueProd.send(message); Message r = queueCons.receive(500); assertEquivalent(r, DeliveryMode.NON_PERSISTENT); r = queueCons.receive(500); assertEquivalent(r, DeliveryMode.NON_PERSISTENT); r = queueCons.receive(500); assertEquivalent(r, DeliveryMode.NON_PERSISTENT); queueCons.close(); session.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(); verify(messageProducer).close();
private int clearQueue(Connection connection, String queueName) throws Exception { Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Queue destination = session.createQueue(queueName); MessageConsumer messageConsumer = session.createConsumer(destination); int received = 0; while (messageConsumer.receive(500) != null) received++; session.close(); return received; } }
Message[] outbound = new Message[] {session.createTextMessage("First Message"), session.createTextMessage("Second Message")}; producer.send(outbound[0]); commitTx(); producer.send(session.createTextMessage("I'm going to get rolled back.")); consumer.close(); session.close(); producer.send(outbound[1]); commitTx();
@Test public void testJmsTopicAppenderCompatibility() throws Exception { final JmsAppender appender = (JmsAppender) ctx.getRequiredAppender("JmsTopicAppender"); final LogEvent expected = createLogEvent(); appender.append(expected); then(session).should().createObjectMessage(eq(expected)); then(objectMessage).should().setJMSTimestamp(anyLong()); then(messageProducer).should().send(objectMessage); appender.stop(); then(session).should().close(); then(connection).should().close(); }
@org.junit.Ignore public void testSendObjectToQueue() throws Exception { final TestRunner runner = TestRunners.newTestRunner(GetJMSQueue.class); runner.setProperty(JmsProperties.JMS_PROVIDER, JmsProperties.ACTIVEMQ_PROVIDER); runner.setProperty(JmsProperties.URL, "tcp://localhost:61616"); runner.setProperty(JmsProperties.DESTINATION_TYPE, JmsProperties.DESTINATION_TYPE_QUEUE); runner.setProperty(JmsProperties.DESTINATION_NAME, "queue.testing"); runner.setProperty(JmsProperties.ACKNOWLEDGEMENT_MODE, JmsProperties.ACK_MODE_AUTO); WrappedMessageProducer wrappedProducer = JmsFactory.createMessageProducer(runner.getProcessContext(), true); final Session jmsSession = wrappedProducer.getSession(); final MessageProducer producer = wrappedProducer.getProducer(); // Revision class is used because test just needs any Serializable class in core NiFi final ObjectMessage message = jmsSession.createObjectMessage(new Revision(1L, "ID", "COMP_ID")); producer.send(message); jmsSession.commit(); producer.close(); jmsSession.close(); } }
@Override public void run() { try { con.start(); Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE); session.close(); } catch (Exception e) { e.printStackTrace(); failed.set(true); } } };
try { queueConnection = connectionFactory.createConnection(); queueSession = queueConnection.createSession(transacted, Session.AUTO_ACKNOWLEDGE); TextMessage message = queueSession.createTextMessage(eventXml); 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); queueSession.close(); } catch (JMSException e) { logger.warn("Error when closing queue session", e); queueConnection.close(); } catch (JMSException e) { logger.warn("Error when closing queue connection", e);
void receiveAndProcess(Queue queue, EntityManagerFactory entityManagerFactory, long waitTime, int countDown) throws Exception { Session qsession = qconnetion.createSession(true, QueueSession.AUTO_ACKNOWLEDGE); MessageConsumer consumer = qsession.createConsumer(queue); qconnetion.start(); qsession.close(); qconnetion.close();
given(con.createSession(true, Session.AUTO_ACKNOWLEDGE)).willReturn(session); verify(session).close(); verify(con).close();
@Test public void testRedelivery() throws Exception { prepareMessage(message); session.close(); session = conn.createSession(false, Session.CLIENT_ACKNOWLEDGE); queueProd = session.createProducer(queue1); queueProd.setDeliveryMode(DeliveryMode.PERSISTENT); queueCons = session.createConsumer(queue1); queueProd.send(message); Message r = queueCons.receive(500); assertEquivalent(r, DeliveryMode.PERSISTENT); queueCons.close(); session.close(); session = conn.createSession(false, Session.CLIENT_ACKNOWLEDGE); queueCons = session.createConsumer(queue1); r = queueCons.receive(1000); assertEquivalent(r, DeliveryMode.PERSISTENT, true); r.acknowledge(); ProxyAssertSupport.assertNull(queueCons.receive(100)); }
private int clearQueue(Connection connection, String queueName) throws JMSException { Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Queue destination = session.createQueue(queueName); MessageConsumer messageConsumer = session.createConsumer(destination); int received = 0; while (messageConsumer.receive(500) != null) received++; session.close(); return received; } }
session.close(); int batchCount = 10; producer.send(session.createTextMessage("Test Message: " + i)); commitTx(); session.close(); session.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(); }