/** * @param e * @return */ protected void parseWildcardConfiguration(final Element e, final Configuration mainConfig) { WildcardConfiguration conf = mainConfig.getWildcardConfiguration(); conf.setDelimiter(getString(e, "delimiter", Character.toString(conf.getDelimiter()), Validators.NO_CHECK).charAt(0)); conf.setAnyWords(getString(e, "any-words", Character.toString(conf.getAnyWords()), Validators.NO_CHECK).charAt(0)); conf.setSingleWord(getString(e, "single-word", Character.toString(conf.getSingleWord()), Validators.NO_CHECK).charAt(0)); conf.setRoutingEnabled(getBoolean(e, "enabled", conf.isRoutingEnabled())); conf.setRoutingEnabled(getBoolean(e, "routing-enabled", conf.isRoutingEnabled())); }
private WildcardConfiguration createWildCardConfiguration() { WildcardConfiguration wildcardConfiguration = new WildcardConfiguration(); wildcardConfiguration.setAnyWords('#'); wildcardConfiguration.setDelimiter('/'); wildcardConfiguration.setRoutingEnabled(true); wildcardConfiguration.setSingleWord('+'); return wildcardConfiguration; }
private void addWildCardConfiguration(Configuration configuration) { WildcardConfiguration wildcardConfiguration = new WildcardConfiguration(); wildcardConfiguration.setAnyWords('#'); wildcardConfiguration.setDelimiter('/'); wildcardConfiguration.setRoutingEnabled(true); wildcardConfiguration.setSingleWord('+'); configuration.setWildCardConfiguration(wildcardConfiguration); }
@Override public void configureBroker() throws Exception { super.configureBroker(); WildcardConfiguration wildcardConfiguration = new WildcardConfiguration(); wildcardConfiguration.setDelimiter('.'); wildcardConfiguration.setSingleWord('*'); wildcardConfiguration.setAnyWords('>'); server.getConfiguration().setWildCardConfiguration(wildcardConfiguration); }
@Test public void testDurableUnSubscribeWithoutDurableSubName() throws Exception { server.getConfiguration().getWildcardConfiguration().setDelimiter('/'); server.getAddressSettingsRepository().addMatch("/topic/#", new AddressSettings().setDefaultAddressRoutingType(RoutingType.MULTICAST).setDefaultQueueRoutingType(RoutingType.MULTICAST)); conn.connect(defUser, defPass, "myclientid"); String subId = UUID.randomUUID().toString(); String durableSubName = UUID.randomUUID().toString(); String receipt = UUID.randomUUID().toString(); ClientStompFrame frame = conn.createFrame(Stomp.Commands.SUBSCRIBE) .addHeader(Stomp.Headers.Subscribe.DESTINATION, "/topic/test.foo") .addHeader(Stomp.Headers.Unsubscribe.ID, subId) .addHeader(Stomp.Headers.Subscribe.ACK_MODE, Stomp.Headers.Subscribe.AckModeValues.CLIENT_INDIVIDUAL) .addHeader(Stomp.Headers.Subscribe.DURABLE_SUBSCRIPTION_NAME, durableSubName) .addHeader(Stomp.Headers.RECEIPT_REQUESTED, receipt); frame = conn.sendFrame(frame); assertEquals(receipt, frame.getHeader(Stomp.Headers.Response.RECEIPT_ID)); assertTrue(Wait.waitFor(() -> server.locateQueue(SimpleString.toSimpleString("myclientid." + durableSubName)) != null, 2000, 100)); receipt = UUID.randomUUID().toString(); frame = conn.createFrame(Stomp.Commands.UNSUBSCRIBE) .addHeader(Stomp.Headers.Unsubscribe.ID, subId) .addHeader(Stomp.Headers.RECEIPT_REQUESTED, receipt); frame = conn.sendFrame(frame); assertEquals(receipt, frame.getHeader(Stomp.Headers.Response.RECEIPT_ID)); conn.disconnect(); // make sure the durable subscription queue is still there assertTrue(Wait.waitFor(() -> server.locateQueue(SimpleString.toSimpleString("myclientid." + durableSubName)) != null, 2000, 100)); }
@Override @Before public void setUp() throws Exception { super.setUp(); WildcardConfiguration wildcardConfiguration = new WildcardConfiguration(); wildcardConfiguration.setDelimiter('/'); Configuration configuration = createDefaultInVMConfig().setWildcardRoutingEnabled(true).setTransactionTimeoutScanPeriod(500).setWildCardConfiguration(wildcardConfiguration); server = addServer(ActiveMQServers.newActiveMQServer(configuration, false)); server.start(); server.getManagementService().enableNotifications(false); locator = createInVMNonHALocator(); sf = createSessionFactory(locator); clientSession = addClientSession(sf.createSession(false, true, true)); }
wildcardConfiguration.setDelimiter('/'); wildcardConfiguration.setRoutingEnabled(true); wildcardConfiguration.setSingleWord('+');
wildcardConfiguration.setDelimiter('/'); wildcardConfiguration.setRoutingEnabled(true); wildcardConfiguration.setSingleWord('+');
@Test public void testMatchingDocsCustomUnderscorDelimiter() throws Throwable { WildcardConfiguration wildcardConfiguration = new WildcardConfiguration(); wildcardConfiguration.setDelimiter('_'); HierarchicalObjectRepository<String> repo = new HierarchicalObjectRepository<>(wildcardConfiguration); repo.addMatch("a_b_#", "ab#"); repo.addMatch("a_b_d_#", "abd#"); repo.addMatch("#", "root"); Assert.assertEquals("ab#", repo.getMatch("a_b")); Assert.assertEquals("ab#", repo.getMatch("a_b_c")); Assert.assertEquals("abd#", repo.getMatch("a_b_d_lll")); Assert.assertEquals("root", repo.getMatch("z_z_z_z_z")); Assert.assertEquals("root", repo.getMatch("a_babc")); Assert.assertEquals("ab#", repo.getMatch("a_b_dabc")); Assert.assertEquals("abd#", repo.getMatch("a_b_d")); }
@Test public void testMatchingDocsCustomForwardSlashDelimiter() throws Throwable { WildcardConfiguration wildcardConfiguration = new WildcardConfiguration(); wildcardConfiguration.setDelimiter('/'); HierarchicalObjectRepository<String> repo = new HierarchicalObjectRepository<>(wildcardConfiguration); repo.addMatch("a/b/#", "ab#"); repo.addMatch("a/b/d/#", "abd#"); repo.addMatch("#", "root"); Assert.assertEquals("ab#", repo.getMatch("a/b")); Assert.assertEquals("ab#", repo.getMatch("a/b/c")); Assert.assertEquals("abd#", repo.getMatch("a/b/d/lll")); Assert.assertEquals("root", repo.getMatch("z/z/z/z/z")); Assert.assertEquals("root", repo.getMatch("a/babc")); Assert.assertEquals("ab#", repo.getMatch("a/b/dabc")); Assert.assertEquals("abd#", repo.getMatch("a/b/d")); }