void setConnection(MQTTConnection connection, ConnectionEntry entry) throws Exception { this.connectionEntry = entry; this.connection = connection; this.session = new MQTTSession(this, connection, protocolManager, server.getConfiguration().getWildcardConfiguration()); }
void setConnection(MQTTConnection connection, ConnectionEntry entry) throws Exception { this.connectionEntry = entry; this.connection = connection; this.session = new MQTTSession(this, connection, protocolManager, server.getConfiguration().getWildcardConfiguration()); }
public String convertWildcard(String physicalName) { return OPENWIRE_WILDCARD.convert(physicalName, server.getConfiguration().getWildcardConfiguration()); }
/** * @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())); }
addressSettingsRepository = new HierarchicalObjectRepository<>(configuration.getWildcardConfiguration(), new HierarchicalObjectRepository.MatchModifier() { @Override public String modify(String input) { securityRepository = new HierarchicalObjectRepository<>(configuration.getWildcardConfiguration());
protected void initializeJournal(Configuration configuration) throws Exception { this.config = configuration; executor = Executors.newFixedThreadPool(5, ActiveMQThreadFactory.defaultThreadFactory()); executorFactory = new OrderedExecutorFactory(executor); scheduledExecutorService = new ScheduledThreadPoolExecutor(configuration.getScheduledThreadPoolMaxSize(), new ThreadFactory() { @Override public Thread newThread(Runnable r) { return new Thread(r); } }); HierarchicalRepository<AddressSettings> addressSettingsRepository = new HierarchicalObjectRepository<>(config.getWildcardConfiguration()); addressSettingsRepository.setDefault(new AddressSettings()); if (configuration.isJDBC()) { storageManager = new JDBCJournalStorageManager(config, null, scheduledExecutorService, executorFactory, executorFactory, null); PagingStoreFactory pageStoreFactory = new PagingStoreFactoryDatabase((DatabaseStorageConfiguration) configuration.getStoreConfiguration(), storageManager, 1000L, scheduledExecutorService, executorFactory, false, null); pagingmanager = new PagingManagerImpl(pageStoreFactory, addressSettingsRepository, configuration.getManagementAddress()); } else { storageManager = new JournalStorageManager(config, EmptyCriticalAnalyzer.getInstance(), executorFactory, executorFactory); PagingStoreFactory pageStoreFactory = new PagingStoreFactoryNIO(storageManager, config.getPagingLocation(), 1000L, scheduledExecutorService, executorFactory, true, null); pagingmanager = new PagingManagerImpl(pageStoreFactory, addressSettingsRepository, configuration.getManagementAddress()); } }
protected void initializeJournal(Configuration configuration) throws Exception { this.config = configuration; executor = Executors.newFixedThreadPool(5, ActiveMQThreadFactory.defaultThreadFactory()); executorFactory = new OrderedExecutorFactory(executor); scheduledExecutorService = new ScheduledThreadPoolExecutor(configuration.getScheduledThreadPoolMaxSize(), new ThreadFactory() { @Override public Thread newThread(Runnable r) { return new Thread(r); } }); HierarchicalRepository<AddressSettings> addressSettingsRepository = new HierarchicalObjectRepository<>(config.getWildcardConfiguration()); addressSettingsRepository.setDefault(new AddressSettings()); if (configuration.isJDBC()) { storageManager = new JDBCJournalStorageManager(config, null, scheduledExecutorService, executorFactory, executorFactory, null); PagingStoreFactory pageStoreFactory = new PagingStoreFactoryDatabase((DatabaseStorageConfiguration) configuration.getStoreConfiguration(), storageManager, 1000L, scheduledExecutorService, executorFactory, false, null); pagingmanager = new PagingManagerImpl(pageStoreFactory, addressSettingsRepository, configuration.getManagementAddress()); } else { storageManager = new JournalStorageManager(config, EmptyCriticalAnalyzer.getInstance(), executorFactory, executorFactory); PagingStoreFactory pageStoreFactory = new PagingStoreFactoryNIO(storageManager, config.getPagingLocation(), 1000L, scheduledExecutorService, executorFactory, true, null); pagingmanager = new PagingManagerImpl(pageStoreFactory, addressSettingsRepository, configuration.getManagementAddress()); } }
@Test public void testWildcardConfiguration() throws Exception { FileConfigurationParser parser = new FileConfigurationParser(); String configStr = firstPart + "<wildcard-addresses>\n<routing-enabled>true</routing-enabled>\n<delimiter>/</delimiter>\n<any-words>></any-words></wildcard-addresses>" + lastPart; ByteArrayInputStream input = new ByteArrayInputStream(configStr.getBytes(StandardCharsets.UTF_8)); Configuration config = parser.parseMainConfig(input); WildcardConfiguration wildCard = config.getWildcardConfiguration(); assertEquals('/', wildCard.getDelimiter()); assertTrue(wildCard.isRoutingEnabled()); assertEquals('>', wildCard.getAnyWords()); assertEquals('*', wildCard.getSingleWord()); }
@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)); }
postOffice = new PostOfficeImpl(this, storageManager, pagingManager, queueFactory, managementService, configuration.getMessageExpiryScanPeriod(), configuration.getAddressQueueScanPeriod(), configuration.getWildcardConfiguration(), configuration.getIDCacheSize(), configuration.isPersistIDCache(), addressSettingsRepository);
configuration.setTransactionTimeout(TRANSACTION_TIMEOUT.resolveModelAttribute(context, model).asLong()); configuration.setTransactionTimeoutScanPeriod(TRANSACTION_TIMEOUT_SCAN_PERIOD.resolveModelAttribute(context, model).asLong()); configuration.getWildcardConfiguration().setRoutingEnabled(WILD_CARD_ROUTING_ENABLED.resolveModelAttribute(context, model).asBoolean());
configuration.setTransactionTimeout(TRANSACTION_TIMEOUT.resolveModelAttribute(context, model).asLong()); configuration.setTransactionTimeoutScanPeriod(TRANSACTION_TIMEOUT_SCAN_PERIOD.resolveModelAttribute(context, model).asLong()); configuration.getWildcardConfiguration().setRoutingEnabled(WILD_CARD_ROUTING_ENABLED.resolveModelAttribute(context, model).asBoolean());