@Override public void createQueue(final String address, final String queueName, final String filterString, final boolean durable) throws ActiveMQException { createQueue(SimpleString.toSimpleString(address), SimpleString.toSimpleString(queueName), SimpleString.toSimpleString(filterString), durable); }
/** * Constructor for the ClientRequestor. * * The implementation expects a ClientSession with automatic commits of sends and acknowledgements * * @param session a ClientSession uses to handle requests and replies * @param requestAddress the address to send request messages to * @throws Exception */ public ClientRequestor(final ClientSession session, final SimpleString requestAddress) throws Exception { queueSession = session; requestProducer = queueSession.createProducer(requestAddress); replyQueue = new SimpleString(requestAddress + "." + UUID.randomUUID().toString()); queueSession.createTemporaryQueue(replyQueue, replyQueue); replyConsumer = queueSession.createConsumer(replyQueue); }
public static String toSimpleString(byte[] bytes) { SimpleString simpleString = new SimpleString(bytes); String value = simpleString.toString(); for (char c : value.toCharArray()) { if (c < ' ' || c > 127) { return NON_ASCII_STRING; } } return value; }
/** * Concatenates a SimpleString and a String * * @param toAdd the String to concatenate with. * @return the concatenated SimpleString */ public SimpleString concat(final String toAdd) { return concat(new SimpleString(toAdd)); }
public SimpleString convertName(SimpleString name) { if (name == null) { return null; } if (name.startsWith(OLD_QUEUE_PREFIX)) { return name.subSeq(OLD_QUEUE_PREFIX.length(), name.length()); } else if (name.startsWith(OLD_TOPIC_PREFIX)) { return name.subSeq(OLD_TOPIC_PREFIX.length(), name.length()); } else { return name; } }
public static SimpleString getOldPrefixedAddress(SimpleString address, RoutingType routingType) { if (routingType == RoutingType.MULTICAST && !address.startsWith(OLD_TOPIC_PREFIX)) { return OLD_TOPIC_PREFIX.concat(address); } else if (routingType == RoutingType.ANYCAST && !address.startsWith(OLD_QUEUE_PREFIX)) { return OLD_QUEUE_PREFIX.concat(address); } return address; } }
@Test public void testBasicPluginAuthorization() throws Exception { server.start(); ClientSessionFactory cf = locator.createSessionFactory(); String name = "queue1"; try { ClientSession session = cf.createSession("first", "secret", false, true, true, false, 0); session.createQueue(SimpleString.toSimpleString(name), SimpleString.toSimpleString(name)); ClientProducer producer = session.createProducer(); producer.send(name, session.createMessage(false)); session.close(); } catch (ActiveMQException e) { e.printStackTrace(); Assert.fail("should not throw exception"); } cf.close(); }
@Test public void testFlowControlMessageNotRouted() throws Exception { final SimpleString address = new SimpleString("testaddress"); server = createServer(false, isNetty()); AddressSettings addressSettings = new AddressSettings().setMaxSizeBytes(1024).setAddressFullMessagePolicy(AddressFullMessagePolicy.BLOCK); HierarchicalRepository<AddressSettings> repos = server.getAddressSettingsRepository(); repos.addMatch(address.toString(), addressSettings); server.start(); waitForServerToStart(server); locator.setProducerWindowSize(1024).setConsumerWindowSize(1024).setAckBatchSize(1024); sf = createSessionFactory(locator); session = sf.createSession(false, true, true, true); ClientProducer producer = session.createProducer(address); byte[] bytes = new byte[100]; final int numMessages = 1000; for (int i = 0; i < numMessages; i++) { ClientMessage message = session.createMessage(false); message.getBodyBuffer().writeBytes(bytes); producer.send(message); } }
@Test public void testSimple() throws Exception { ClientProducer producer = clientSession.createProducer(address); ClientConsumer consumer = clientSession.createConsumer(qName1); ClientMessage m1 = createTextMessage(clientSession, "m1"); SimpleString rh = new SimpleString("SMID1"); m1.putStringProperty(Message.HDR_LAST_VALUE_NAME, rh); ClientMessage m2 = createTextMessage(clientSession, "m2"); m2.putStringProperty(Message.HDR_LAST_VALUE_NAME, rh); producer.send(m1); producer.send(m2); clientSession.start(); ClientMessage m = consumer.receive(1000); Assert.assertNotNull(m); m.acknowledge(); Assert.assertEquals(m.getBodyBuffer().readString(), "m2"); }
@Test public void testSendToDLAWhenNoRoute() throws Exception { SimpleString dla = new SimpleString("DLA"); SimpleString address = new SimpleString("empty_address"); AddressSettings addressSettings = new AddressSettings().setDeadLetterAddress(dla).setSendToDLAOnNoRoute(true); server.getAddressSettingsRepository().addMatch(address.toString(), addressSettings); SimpleString dlq = new SimpleString("DLQ1"); clientSession.createQueue(dla, dlq, null, false); ClientProducer producer = clientSession.createProducer(address); producer.send(createTextMessage(clientSession, "heyho!")); clientSession.start(); ClientConsumer clientConsumer = clientSession.createConsumer(dlq); ClientMessage m = clientConsumer.receive(500); m.acknowledge(); Assert.assertNotNull(m); Assert.assertEquals(m.getBodyBuffer().readString(), "heyho!"); }
@Override @Before public void setUp() throws Exception { super.setUp(); configuration = createDefaultInVMConfig(); server = createServer(true, configuration); server.start(); qs = new AddressSettings().setDefaultLastValueQueue(true); server.getAddressSettingsRepository().addMatch(address.toString(), qs); // then we create a client as normal locator = createInVMNonHALocator().setBlockOnAcknowledge(true).setAckBatchSize(0); ClientSessionFactory sessionFactory = createSessionFactory(locator); clientSession = sessionFactory.createSession(false, true, true); clientSessionXa = sessionFactory.createSession(true, false, false); clientSession.createQueue(address, qName1, null, true); }
@Test public void testAddressSettingUSed() throws Exception { server.getAddressSettingsRepository().addMatch(address.toString(), new AddressSettings().setDefaultLastValueQueue(true)); ClientSession session = createSessionFactory(locator).createSession(false, true, true); SimpleString filterString = new SimpleString("x=y"); session.createQueue(address, queueName, filterString, false); Binding binding = server.getPostOffice().getBinding(queueName); Assert.assertTrue(binding.getBindable() instanceof LastValueQueue); session.close(); }
@Override @Before public void setUp() throws Exception { super.setUp(); ConfigurationImpl configuration = (ConfigurationImpl) createDefaultInVMConfig().setMessageExpiryScanPeriod(1000); server = addServer(ActiveMQServers.newActiveMQServer(configuration, false)); // start the server server.start(); // then we create a client as normal locator = createInVMNonHALocator().setBlockOnAcknowledge(true); ClientSessionFactory sessionFactory = createSessionFactory(locator); clientSession = sessionFactory.createSession(false, true, true); clientSession.createQueue(qName, RoutingType.MULTICAST, qName, null, false); expiryAddress = new SimpleString("EA"); expiryQueue = new SimpleString("expiryQ"); AddressSettings addressSettings = new AddressSettings().setExpiryAddress(expiryAddress); server.getAddressSettingsRepository().addMatch(qName.toString(), addressSettings); server.getAddressSettingsRepository().addMatch(qName2.toString(), addressSettings); clientSession.createQueue(expiryAddress, RoutingType.MULTICAST, expiryQueue, null, false); }
@Test public void testPurgeOnNoConsumersFalse() throws Exception { SimpleString address = new SimpleString("test.address"); SimpleString queueName = SimpleString.toSimpleString(UUID.randomUUID().toString()); server.createQueue(address, RoutingType.ANYCAST, queueName, null, null, true, false, false, false, false, 1, false, true); assertNotNull(server.locateQueue(queueName)); ClientSession session = sessionFactory.createSession(); ClientProducer producer = session.createProducer(address); producer.send(session.createMessage(true)); session.createConsumer(queueName).close(); assertNotNull(server.locateQueue(queueName)); assertEquals(1, server.locateQueue(queueName).getMessageCount()); }
@Test public void testQueueQueryNoQ() throws Exception { server.getAddressSettingsRepository().addMatch("#", new AddressSettings().setAutoCreateQueues(false)); cf = createSessionFactory(locator); ClientSession clientSession = cf.createSession(false, true, true); QueueQuery resp = clientSession.queueQuery(new SimpleString(queueName)); Assert.assertFalse(resp.isExists()); Assert.assertFalse(resp.isAutoCreateQueues()); Assert.assertEquals(queueName, resp.getAddress().toString()); clientSession.close(); }
protected void doTestK(final ClientSessionFactory sf, final int threadNum) throws Exception { ClientSession s = sf.createSession(false, false, false); s.addMetaData("data", RandomUtil.randomString()); s.createQueue(MultiThreadRandomReattachTestBase.ADDRESS, new SimpleString(threadNum + MultiThreadRandomReattachTestBase.ADDRESS.toString()), (SimpleString) null, false); final int numConsumers = 100; for (int i = 0; i < numConsumers; i++) { ClientConsumer consumer = s.createConsumer(new SimpleString(threadNum + MultiThreadRandomReattachTestBase.ADDRESS.toString())); consumer.close(); } s.deleteQueue(new SimpleString(threadNum + MultiThreadRandomReattachTestBase.ADDRESS.toString())); s.close(); }
filter = ActiveMQConnection.CONNECTION_ID_PROPERTY_NAME.toString() + "<>'" + connection.getClientID() + "'"; } else { filter = ActiveMQConnection.CONNECTION_ID_PROPERTY_NAME.toString() + "<>'" + connection.getUID() + "'"; coreFilterString = new SimpleString(SelectorTranslator.convertToActiveMQFilterString(selectorString)); AddressQuery response = session.addressQuery(dest.getSimpleAddress()); consumer = session.createConsumer(dest.getSimpleAddress(), coreFilterString, false); } else { AddressQuery response = session.addressQuery(dest.getSimpleAddress()); queueName = new SimpleString(UUID.randomUUID().toString()); oldFilterString != null && coreFilterString != null && !oldFilterString.equals(coreFilterString); boolean topicChanged = !oldTopicName.equals(dest.getSimpleAddress());
public void sendMessages(final int start, final int end) throws Exception { try (ClientSession session = factory.createSession(false, false)) { try { session.createQueue(QUEUE, QUEUE, true); } catch (Exception ignored) { } ClientProducer prod = session.createProducer(QUEUE); for (int i = start; i < end; i++) { ClientMessage msg = session.createMessage(true); msg.putIntProperty(new SimpleString("key"), i); msg.getBodyBuffer().writeUTF("message " + i); prod.send(msg); } session.commit(); session.close(); // server.stop(); -- this test was not supposed to stop the server, it should crash } }
@Test public void testSendManagementWithRole() throws Exception { ActiveMQServer server = createServer(); server.start(); HierarchicalRepository<Set<Role>> securityRepository = server.getSecurityRepository(); ActiveMQJAASSecurityManager securityManager = (ActiveMQJAASSecurityManager) server.getSecurityManager(); securityManager.getConfiguration().addUser("auser", "pass"); Role role = new Role("arole", false, false, false, false, false, false, true, false, false, false); Set<Role> roles = new HashSet<>(); roles.add(role); securityRepository.addMatch(configuration.getManagementAddress().toString(), roles); securityManager.getConfiguration().addRole("auser", "arole"); locator.setBlockOnNonDurableSend(true); ClientSessionFactory cf = createSessionFactory(locator); ClientSession session = cf.createSession("auser", "pass", false, true, true, false, -1); ClientProducer cp = session.createProducer(configuration.getManagementAddress()); cp.send(session.createMessage(false)); session.close(); }
private void restartServer() throws Exception { server.stop(); server = null; server = createServer(true, configuration); server.getAddressSettingsRepository().addMatch(address.toString(), qs); // start the server server.start(); server.getAddressSettingsRepository().addMatch(address.toString(), new AddressSettings().setDefaultLastValueQueue(true)); // then we create a client as normal locator.close(); locator = createInVMNonHALocator().setBlockOnAcknowledge(true).setAckBatchSize(0); ClientSessionFactory sessionFactory = createSessionFactory(locator); clientSession = sessionFactory.createSession(false, true, true); clientSessionXa = sessionFactory.createSession(true, false, false); } }