private BrokerService createAndConfigureBroker(URI uri) throws Exception { BrokerService broker = createBroker(uri); broker.setUseJmx(true); // Make topics "selectorAware" VirtualTopic virtualTopic = new VirtualTopic(); virtualTopic.setSelectorAware(true); VirtualDestinationInterceptor interceptor = new VirtualDestinationInterceptor(); interceptor.setVirtualDestinations(new VirtualDestination[] {virtualTopic}); broker.setDestinationInterceptors(new DestinationInterceptor[] {interceptor}); configurePersistenceAdapter(broker); SubQueueSelectorCacheBrokerPlugin selectorCacheBrokerPlugin = new SubQueueSelectorCacheBrokerPlugin(); selectorCacheBrokerPlugin.setSingleSelectorPerDestination(true); File persisteFile = new File(PERSIST_SELECTOR_CACHE_FILE_BASEPATH + broker.getBrokerName()); selectorCacheBrokerPlugin.setPersistFile(persisteFile); broker.setPlugins(new BrokerPlugin[] {selectorCacheBrokerPlugin}); return broker; }
/** Setup broker with VirtualTopic configured */ private void setupBroker(String uri) { try { broker = BrokerFactory.createBroker(uri); VirtualDestinationInterceptor interceptor = new VirtualDestinationInterceptor(); VirtualTopic virtualTopic = new VirtualTopic(); virtualTopic.setName("VirtualOrders.>"); virtualTopic.setSelectorAware(true); VirtualDestination[] virtualDestinations = {virtualTopic}; interceptor.setVirtualDestinations(virtualDestinations); broker.setDestinationInterceptors(new DestinationInterceptor[] {interceptor}); SubQueueSelectorCacheBrokerPlugin subQueueSelectorCacheBrokerPlugin = new SubQueueSelectorCacheBrokerPlugin(); BrokerPlugin[] updatedPlugins = {subQueueSelectorCacheBrokerPlugin}; broker.setPlugins(updatedPlugins); broker.start(); broker.waitUntilStarted(); } catch (Exception e) { LOG.error("Failed creating broker", e); } }