/** * Create the default destination interceptor */ protected DestinationInterceptor[] createDefaultDestinationInterceptor() { List<DestinationInterceptor> answer = new ArrayList<>(); if (isUseVirtualTopics()) { VirtualDestinationInterceptor interceptor = new VirtualDestinationInterceptor(); VirtualTopic virtualTopic = new VirtualTopic(); virtualTopic.setName("VirtualTopic.>"); VirtualDestination[] virtualDestinations = { virtualTopic }; interceptor.setVirtualDestinations(virtualDestinations); answer.add(interceptor); } if (isUseMirroredQueues()) { MirroredQueue interceptor = new MirroredQueue(); answer.add(interceptor); } DestinationInterceptor[] array = new DestinationInterceptor[answer.size()]; answer.toArray(array); return array; }
@Override public ActiveMQDestination getVirtualDestination() { return new ActiveMQTopic(getName()); }
public VirtualTopicInterceptor(Destination next, VirtualTopic virtualTopic) { super(next); this.prefix = virtualTopic.getPrefix(); this.postfix = virtualTopic.getPostfix(); this.local = virtualTopic.isLocal(); this.concurrentSend = virtualTopic.isConcurrentSend(); this.transactedSend = virtualTopic.isTransactedSend(); this.dropMessageOnResourceLimit = virtualTopic.isDropOnResourceLimit(); this.setOriginalDestination = virtualTopic.isSetOriginalDestination(); }
if (virtualDestination instanceof VirtualTopic) { VirtualTopic vt = (VirtualTopic) virtualDestination; String prefix = vt.getPrefix() != null ? vt.getPrefix() : ""; String postfix = vt.getPostfix() != null ? vt.getPostfix() : ""; if (prefix.endsWith(".")) { prefix = prefix.substring(0, prefix.length() - 1);
public VirtualTopicInterceptor(Destination next, VirtualTopic virtualTopic) { super(next); this.prefix = virtualTopic.getPrefix(); this.postfix = virtualTopic.getPostfix(); this.local = virtualTopic.isLocal(); this.concurrentSend = virtualTopic.isConcurrentSend(); this.transactedSend = virtualTopic.isTransactedSend(); }
private DestinationFilter getVirtualTopicConsumerDestinationFilter() { // created at startup, so no sync needed if (virtualConsumerDestinationFilter == null) { Set <ActiveMQQueue> consumerDestinations = new HashSet<>(); if (destinationInterceptors != null) { for (DestinationInterceptor interceptor : destinationInterceptors) { if (interceptor instanceof VirtualDestinationInterceptor) { VirtualDestinationInterceptor virtualDestinationInterceptor = (VirtualDestinationInterceptor) interceptor; for (VirtualDestination virtualDestination: virtualDestinationInterceptor.getVirtualDestinations()) { if (virtualDestination instanceof VirtualTopic) { consumerDestinations.add(new ActiveMQQueue(((VirtualTopic) virtualDestination).getPrefix() + DestinationFilter.ANY_DESCENDENT)); } if (isUseVirtualDestSubs()) { try { broker.virtualDestinationAdded(getAdminConnectionContext(), virtualDestination); LOG.debug("Adding virtual destination: {}", virtualDestination); } catch (Exception e) { LOG.warn("Could not fire virtual destination consumer advisory", e); } } } } } } ActiveMQQueue filter = new ActiveMQQueue(); filter.setCompositeDestinations(consumerDestinations.toArray(new ActiveMQDestination[]{})); virtualConsumerDestinationFilter = DestinationFilter.parseFilter(filter); } return virtualConsumerDestinationFilter; }
@Override public Destination interceptMappedDestination(Destination destination) { // do a reverse map from destination to get actual virtual destination final String physicalName = destination.getActiveMQDestination().getPhysicalName(); final Pattern pattern = Pattern.compile(getRegex(prefix) + "(.*)" + getRegex(postfix)); final Matcher matcher = pattern.matcher(physicalName); if (matcher.matches()) { final String virtualName = matcher.group(1); return new MappedQueueFilter(new ActiveMQTopic(virtualName), destination); } return destination; }
private VirtualDestination[] fromDto(DtoVirtualDestinationInterceptor virtualDestinationInterceptor) { List<VirtualDestination> answer = new ArrayList<VirtualDestination>(); for (Object vd : filter(virtualDestinationInterceptor, DtoVirtualDestinationInterceptor.VirtualDestinations.class)) { for (Object vt : filter(vd, DtoVirtualTopic.class)) { answer.add(fromDto(vt, new VirtualTopic())); } for (Object vt : filter(vd, DtoCompositeTopic.class)) { answer.add(fromDto(vt, new CompositeTopic())); } for (Object vt : filter(vd, DtoCompositeQueue.class)) { answer.add(fromDto(vt, new CompositeQueue())); } } VirtualDestination[] array = new VirtualDestination[answer.size()]; answer.toArray(array); return array; }
public VirtualTopicInterceptor(Destination next, VirtualTopic virtualTopic) { super(next); this.prefix = virtualTopic.getPrefix(); this.postfix = virtualTopic.getPostfix(); this.local = virtualTopic.isLocal(); this.concurrentSend = virtualTopic.isConcurrentSend(); this.transactedSend = virtualTopic.isTransactedSend(); }
public Destination intercept(Destination destination) { return selectorAware ? new SelectorAwareVirtualTopicInterceptor(destination, getPrefix(), getPostfix()) : new VirtualTopicInterceptor(destination, getPrefix(), getPostfix()); }
@Override public boolean matches(VirtualDestination virtualDestination, ActiveMQDestination activeMQDest) { if (virtualDestination instanceof CompositeDestination) { DestinationFilter filter = DestinationFilter.parseFilter(virtualDestination.getMappedDestinations()); if (filter.matches(activeMQDest)) { return true; } } else if (virtualDestination instanceof VirtualTopic) { DestinationFilter filter = DestinationFilter.parseFilter(new ActiveMQQueue(((VirtualTopic) virtualDestination).getPrefix() + DestinationFilter.ANY_DESCENDENT)); if (filter.matches(activeMQDest)) { return true; } } return false; }
@Override public Destination interceptMappedDestination(Destination destination) { // do a reverse map from destination to get actual virtual destination final String physicalName = destination.getActiveMQDestination().getPhysicalName(); final Pattern pattern = Pattern.compile(getRegex(prefix) + "(.*)" + getRegex(postfix)); final Matcher matcher = pattern.matcher(physicalName); if (matcher.matches()) { final String virtualName = matcher.group(1); return new MappedQueueFilter(new ActiveMQTopic(virtualName), destination); } return destination; }
public VirtualTopicInterceptor(Destination next, VirtualTopic virtualTopic) { super(next); this.prefix = virtualTopic.getPrefix(); this.postfix = virtualTopic.getPostfix(); this.local = virtualTopic.isLocal(); this.concurrentSend = virtualTopic.isConcurrentSend(); this.transactedSend = virtualTopic.isTransactedSend(); }
/** * Create the default destination interceptor */ protected DestinationInterceptor[] createDefaultDestinationInterceptor() { List<DestinationInterceptor> answer = new ArrayList<>(); if (isUseVirtualTopics()) { VirtualDestinationInterceptor interceptor = new VirtualDestinationInterceptor(); VirtualTopic virtualTopic = new VirtualTopic(); virtualTopic.setName("VirtualTopic.>"); VirtualDestination[] virtualDestinations = { virtualTopic }; interceptor.setVirtualDestinations(virtualDestinations); answer.add(interceptor); } if (isUseMirroredQueues()) { MirroredQueue interceptor = new MirroredQueue(); answer.add(interceptor); } DestinationInterceptor[] array = new DestinationInterceptor[answer.size()]; answer.toArray(array); return array; }
if (virtualDestination instanceof VirtualTopic) { VirtualTopic vt = (VirtualTopic) virtualDestination; String prefix = vt.getPrefix() != null ? vt.getPrefix() : ""; String postfix = vt.getPostfix() != null ? vt.getPostfix() : ""; if (prefix.endsWith(".")) { prefix = prefix.substring(0, prefix.length() - 1);
private DestinationFilter getVirtualTopicConsumerDestinationFilter() { // created at startup, so no sync needed if (virtualConsumerDestinationFilter == null) { Set <ActiveMQQueue> consumerDestinations = new HashSet<>(); if (destinationInterceptors != null) { for (DestinationInterceptor interceptor : destinationInterceptors) { if (interceptor instanceof VirtualDestinationInterceptor) { VirtualDestinationInterceptor virtualDestinationInterceptor = (VirtualDestinationInterceptor) interceptor; for (VirtualDestination virtualDestination: virtualDestinationInterceptor.getVirtualDestinations()) { if (virtualDestination instanceof VirtualTopic) { consumerDestinations.add(new ActiveMQQueue(((VirtualTopic) virtualDestination).getPrefix() + DestinationFilter.ANY_DESCENDENT)); } if (isUseVirtualDestSubs()) { try { broker.virtualDestinationAdded(getAdminConnectionContext(), virtualDestination); LOG.debug("Adding virtual destination: {}", virtualDestination); } catch (Exception e) { LOG.warn("Could not fire virtual destination consumer advisory", e); } } } } } } ActiveMQQueue filter = new ActiveMQQueue(); filter.setCompositeDestinations(consumerDestinations.toArray(new ActiveMQDestination[]{})); virtualConsumerDestinationFilter = DestinationFilter.parseFilter(filter); } return virtualConsumerDestinationFilter; }
@Override public ActiveMQDestination getVirtualDestination() { return new ActiveMQTopic(getName()); }
@Override public Destination interceptMappedDestination(Destination destination) { // do a reverse map from destination to get actual virtual destination final String physicalName = destination.getActiveMQDestination().getPhysicalName(); final Pattern pattern = Pattern.compile(getRegex(prefix) + "(.*)" + getRegex(postfix)); final Matcher matcher = pattern.matcher(physicalName); if (matcher.matches()) { final String virtualName = matcher.group(1); return new MappedQueueFilter(new ActiveMQTopic(virtualName), destination); } return destination; }
/** * Create the default destination interceptor */ protected DestinationInterceptor[] createDefaultDestinationInterceptor() { List<DestinationInterceptor> answer = new ArrayList<>(); if (isUseVirtualTopics()) { VirtualDestinationInterceptor interceptor = new VirtualDestinationInterceptor(); VirtualTopic virtualTopic = new VirtualTopic(); virtualTopic.setName("VirtualTopic.>"); VirtualDestination[] virtualDestinations = { virtualTopic }; interceptor.setVirtualDestinations(virtualDestinations); answer.add(interceptor); } if (isUseMirroredQueues()) { MirroredQueue interceptor = new MirroredQueue(); answer.add(interceptor); } DestinationInterceptor[] array = new DestinationInterceptor[answer.size()]; answer.toArray(array); return array; }
if (virtualDestination instanceof VirtualTopic) { VirtualTopic vt = (VirtualTopic) virtualDestination; String prefix = vt.getPrefix() != null ? vt.getPrefix() : ""; String postfix = vt.getPostfix() != null ? vt.getPostfix() : ""; if (prefix.endsWith(".")) { prefix = prefix.substring(0, prefix.length() - 1);