if (!connection.containsKnownDestination(address)) { try { ClientSession.AddressQuery query = clientSession.addressQuery(address);
@Test(timeout = 30000) // QueueAutoCreationTest was created to validate auto-creation of queues // and this test was added to validate a regression: https://issues.apache.org/jira/browse/ARTEMIS-2238 public void testAutoCreateOnTopic() throws Exception { ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:5672"); Connection connection = factory.createConnection(); SimpleString addressName = UUIDGenerator.getInstance().generateSimpleStringUUID(); System.out.println("Address is " + addressName); clientSession.createAddress(addressName, RoutingType.ANYCAST, false); Topic topic = new ActiveMQTopic(addressName.toString()); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer producer = session.createProducer(topic); for (int i = 0; i < 10; i++) { producer.send(session.createTextMessage("hello")); } Assert.assertTrue(((ActiveMQConnection)connection).containsKnownDestination(addressName)); }
@Test //(timeout = 30000) // QueueAutoCreationTest was created to validate auto-creation of queues // and this test was added to validate a regression: https://issues.apache.org/jira/browse/ARTEMIS-2238 public void testAutoCreateOnTopic() throws Exception { ConnectionFactory factory = new ActiveMQConnectionFactory(); Connection connection = factory.createConnection(); SimpleString addressName = UUIDGenerator.getInstance().generateSimpleStringUUID(); System.out.println("Address is " + addressName); clientSession.createAddress(addressName, RoutingType.ANYCAST, false); Topic topic = new ActiveMQTopic(addressName.toString()); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer producer = session.createProducer(topic); for (int i = 0; i < 10; i++) { producer.send(session.createTextMessage("hello")); } Assert.assertTrue(((ActiveMQConnection)connection).containsKnownDestination(addressName)); }
@Test (timeout = 30000) // QueueAutoCreationTest was created to validate auto-creation of queues // and this test was added to validate a regression: https://issues.apache.org/jira/browse/ARTEMIS-2238 public void testAutoCreateOnAddressOnly() throws Exception { server.getAddressSettingsRepository().clear(); AddressSettings settings = new AddressSettings().setAutoCreateAddresses(true).setAutoCreateQueues(false); server.getAddressSettingsRepository().addMatch("#", settings); ConnectionFactory factory = new ActiveMQConnectionFactory(); try (Connection connection = factory.createConnection()) { SimpleString addressName = UUIDGenerator.getInstance().generateSimpleStringUUID(); System.out.println("Address is " + addressName); javax.jms.Queue queue = new ActiveMQQueue(addressName.toString()); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer producer = session.createProducer(null); try { producer.send(queue, session.createTextMessage("hello")); Assert.fail("Expected to throw exception here"); } catch (JMSException expected) { } Assert.assertFalse(((ActiveMQConnection)connection).containsKnownDestination(addressName)); } }
@Test public void testTemporaryQueueLeak() throws Exception { ActiveMQConnection conn = null; try { conn = (ActiveMQConnection) createConnection(); Session producerSession = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); Session consumerSession = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); TemporaryQueue tempQueue = producerSession.createTemporaryQueue(); MessageProducer producer = producerSession.createProducer(tempQueue); MessageConsumer consumer = consumerSession.createConsumer(tempQueue); conn.start(); final String messageText = "This is a message"; javax.jms.Message m = producerSession.createTextMessage(messageText); producer.send(m); TextMessage m2 = (TextMessage) consumer.receive(2000); assertNotNull(m2); assertEquals(messageText, m2.getText()); consumer.close(); tempQueue.delete(); assertFalse(conn.containsKnownDestination(SimpleString.toSimpleString(tempQueue.getQueueName()))); assertFalse(conn.containsTemporaryQueue(SimpleString.toSimpleString(tempQueue.getQueueName()))); } finally { if (conn != null) { conn.close(); } } } @Test
@Test (timeout = 30000) // QueueAutoCreationTest was created to validate auto-creation of queues // and this test was added to validate a regression: https://issues.apache.org/jira/browse/ARTEMIS-2238 public void testAutoCreateOnAddressOnlyDuringProducerCreateQueueSucceed() throws Exception { server.getAddressSettingsRepository().clear(); AddressSettings settings = new AddressSettings().setAutoCreateAddresses(true).setAutoCreateQueues(true); server.getAddressSettingsRepository().addMatch("#", settings); ConnectionFactory factory = cf; try (Connection connection = factory.createConnection()) { SimpleString addressName = UUIDGenerator.getInstance().generateSimpleStringUUID(); clientSession.createAddress(addressName, RoutingType.ANYCAST, true); // this will force the system to create the address only javax.jms.Queue queue = new ActiveMQQueue(addressName.toString()); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer producer = session.createProducer(queue); Assert.assertNotNull(server.locateQueue(addressName)); Assert.assertTrue(((ActiveMQConnection) connection).containsKnownDestination(addressName)); } }
@Test (timeout = 30000) // QueueAutoCreationTest was created to validate auto-creation of queues // and this test was added to validate a regression: https://issues.apache.org/jira/browse/ARTEMIS-2238 public void testAutoCreateOnAddressOnlyDuringProducerCreate() throws Exception { server.getAddressSettingsRepository().clear(); AddressSettings settings = new AddressSettings().setAutoCreateAddresses(true).setAutoCreateQueues(false); server.getAddressSettingsRepository().addMatch("#", settings); ConnectionFactory factory = new ActiveMQConnectionFactory(); Connection connection = factory.createConnection(); SimpleString addressName = UUIDGenerator.getInstance().generateSimpleStringUUID(); clientSession.createAddress(addressName, RoutingType.ANYCAST, true); // this will force the system to create the address only javax.jms.Queue queue = new ActiveMQQueue(addressName.toString()); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); try { MessageProducer producer = session.createProducer(queue); Assert.fail("Exception expected"); } catch (JMSException expected) { } Assert.assertFalse(((ActiveMQConnection)connection).containsKnownDestination(addressName)); }
if (!connection.containsKnownDestination(address)) { try { ClientSession.AddressQuery query = clientSession.addressQuery(address);
if (!connection.containsKnownDestination(address)) { try { ClientSession.AddressQuery query = clientSession.addressQuery(address);
void checkDestination(ActiveMQDestination destination) throws JMSException { SimpleString address = destination.getSimpleAddress(); if (!connection.containsKnownDestination(address)) { try { ClientSession.AddressQuery addressQuery = session.addressQuery(address);
void checkDestination(ActiveMQDestination destination) throws JMSException { SimpleString address = destination.getSimpleAddress(); if (!connection.containsKnownDestination(address)) { try { ClientSession.AddressQuery addressQuery = session.addressQuery(address);