Search in sources :

Example 1 with MulticastProcessor

use of org.apache.camel.processor.MulticastProcessor in project camel by apache.

the class MulticastDefinition method createCompositeProcessor.

protected Processor createCompositeProcessor(RouteContext routeContext, List<Processor> list) throws Exception {
    final AggregationStrategy strategy = createAggregationStrategy(routeContext);
    boolean isParallelProcessing = getParallelProcessing() != null && getParallelProcessing();
    boolean isShareUnitOfWork = getShareUnitOfWork() != null && getShareUnitOfWork();
    boolean isStreaming = getStreaming() != null && getStreaming();
    boolean isStopOnException = getStopOnException() != null && getStopOnException();
    boolean isParallelAggregate = getParallelAggregate() != null && getParallelAggregate();
    boolean isStopOnAggregateException = getStopOnAggregateException() != null && getStopOnAggregateException();
    boolean shutdownThreadPool = ProcessorDefinitionHelper.willCreateNewThreadPool(routeContext, this, isParallelProcessing);
    ExecutorService threadPool = ProcessorDefinitionHelper.getConfiguredExecutorService(routeContext, "Multicast", this, isParallelProcessing);
    long timeout = getTimeout() != null ? getTimeout() : 0;
    if (timeout > 0 && !isParallelProcessing) {
        throw new IllegalArgumentException("Timeout is used but ParallelProcessing has not been enabled.");
    }
    if (onPrepareRef != null) {
        onPrepare = CamelContextHelper.mandatoryLookup(routeContext.getCamelContext(), onPrepareRef, Processor.class);
    }
    MulticastProcessor answer = new MulticastProcessor(routeContext.getCamelContext(), list, strategy, isParallelProcessing, threadPool, shutdownThreadPool, isStreaming, isStopOnException, timeout, onPrepare, isShareUnitOfWork, isParallelAggregate, isStopOnAggregateException);
    return answer;
}
Also used : Processor(org.apache.camel.Processor) MulticastProcessor(org.apache.camel.processor.MulticastProcessor) ExecutorService(java.util.concurrent.ExecutorService) MulticastProcessor(org.apache.camel.processor.MulticastProcessor) UseLatestAggregationStrategy(org.apache.camel.processor.aggregate.UseLatestAggregationStrategy) ShareUnitOfWorkAggregationStrategy(org.apache.camel.processor.aggregate.ShareUnitOfWorkAggregationStrategy) AggregationStrategy(org.apache.camel.processor.aggregate.AggregationStrategy)

Example 2 with MulticastProcessor

use of org.apache.camel.processor.MulticastProcessor in project camel by apache.

the class MulticastDefinition method createProcessor.

@Override
public Processor createProcessor(RouteContext routeContext) throws Exception {
    Processor answer = this.createChildProcessor(routeContext, true);
    // force the answer as a multicast processor even if there is only one child processor in the multicast
    if (!(answer instanceof MulticastProcessor)) {
        List<Processor> list = new ArrayList<Processor>(1);
        list.add(answer);
        answer = createCompositeProcessor(routeContext, list);
    }
    return answer;
}
Also used : Processor(org.apache.camel.Processor) MulticastProcessor(org.apache.camel.processor.MulticastProcessor) ArrayList(java.util.ArrayList) MulticastProcessor(org.apache.camel.processor.MulticastProcessor)

Example 3 with MulticastProcessor

use of org.apache.camel.processor.MulticastProcessor in project camel by apache.

the class SedaEndpoint method updateMulticastProcessor.

protected synchronized void updateMulticastProcessor() throws Exception {
    // only needed if we support multiple consumers
    if (!isMultipleConsumersSupported()) {
        return;
    }
    // stop old before we create a new
    if (consumerMulticastProcessor != null) {
        ServiceHelper.stopService(consumerMulticastProcessor);
        consumerMulticastProcessor = null;
    }
    int size = getConsumers().size();
    if (size >= 1) {
        if (multicastExecutor == null) {
            // create multicast executor as we need it when we have more than 1 processor
            multicastExecutor = getCamelContext().getExecutorServiceManager().newDefaultThreadPool(this, URISupport.sanitizeUri(getEndpointUri()) + "(multicast)");
        }
        // create list of consumers to multicast to
        List<Processor> processors = new ArrayList<Processor>(size);
        for (SedaConsumer consumer : getConsumers()) {
            processors.add(consumer.getProcessor());
        }
        // create multicast processor
        multicastStarted = false;
        consumerMulticastProcessor = new MulticastProcessor(getCamelContext(), processors, null, true, multicastExecutor, false, false, false, 0, null, false, false);
    }
}
Also used : Processor(org.apache.camel.Processor) MulticastProcessor(org.apache.camel.processor.MulticastProcessor) ArrayList(java.util.ArrayList) MulticastProcessor(org.apache.camel.processor.MulticastProcessor) UriEndpoint(org.apache.camel.spi.UriEndpoint) DefaultEndpoint(org.apache.camel.impl.DefaultEndpoint) AsyncEndpoint(org.apache.camel.AsyncEndpoint) BrowsableEndpoint(org.apache.camel.spi.BrowsableEndpoint)

Example 4 with MulticastProcessor

use of org.apache.camel.processor.MulticastProcessor in project camel by apache.

the class DefaultManagementObjectStrategy method getManagedObjectForProcessor.

@SuppressWarnings({ "deprecation", "unchecked" })
public Object getManagedObjectForProcessor(CamelContext context, Processor processor, ProcessorDefinition<?> definition, Route route) {
    ManagedProcessor answer = null;
    if (definition instanceof RecipientListDefinition) {
        // special for RecipientListDefinition, as the processor is wrapped in a pipeline as last
        Pipeline pipeline = (Pipeline) processor;
        Iterator<Processor> it = pipeline.getProcessors().iterator();
        while (it.hasNext()) {
            processor = it.next();
        }
    } else if (definition instanceof ThreadsDefinition) {
        // special for ThreadsDefinition, as the processor is wrapped in a pipeline as first
        Pipeline pipeline = (Pipeline) processor;
        Iterator<Processor> it = pipeline.getProcessors().iterator();
        processor = it.next();
    }
    // unwrap delegates as we want the real target processor
    Processor target = processor;
    while (target != null) {
        // skip error handlers
        if (target instanceof ErrorHandler) {
            return false;
        }
        if (target instanceof ConvertBodyProcessor) {
            answer = new ManagedConvertBody(context, (ConvertBodyProcessor) target, definition);
        } else if (target instanceof ChoiceProcessor) {
            answer = new ManagedChoice(context, (ChoiceProcessor) target, definition);
        } else if (target instanceof Delayer) {
            answer = new ManagedDelayer(context, (Delayer) target, definition);
        } else if (target instanceof Throttler) {
            answer = new ManagedThrottler(context, (Throttler) target, definition);
        } else if (target instanceof DynamicRouter) {
            answer = new ManagedDynamicRouter(context, (DynamicRouter) target, (org.apache.camel.model.DynamicRouterDefinition) definition);
        } else if (target instanceof RoutingSlip) {
            answer = new ManagedRoutingSlip(context, (RoutingSlip) target, (org.apache.camel.model.RoutingSlipDefinition) definition);
        } else if (target instanceof FilterProcessor) {
            answer = new ManagedFilter(context, (FilterProcessor) target, (ExpressionNode) definition);
        } else if (target instanceof LogProcessor) {
            answer = new ManagedLog(context, (LogProcessor) target, definition);
        } else if (target instanceof LoopProcessor) {
            answer = new ManagedLoop(context, (LoopProcessor) target, (org.apache.camel.model.LoopDefinition) definition);
        } else if (target instanceof MarshalProcessor) {
            answer = new ManagedMarshal(context, (MarshalProcessor) target, (org.apache.camel.model.MarshalDefinition) definition);
        } else if (target instanceof UnmarshalProcessor) {
            answer = new ManagedUnmarshal(context, (UnmarshalProcessor) target, (org.apache.camel.model.UnmarshalDefinition) definition);
        } else if (target instanceof CircuitBreakerLoadBalancer) {
            answer = new ManagedCircuitBreakerLoadBalancer(context, (CircuitBreakerLoadBalancer) target, (org.apache.camel.model.LoadBalanceDefinition) definition);
        } else if (target instanceof FailOverLoadBalancer) {
            answer = new ManagedFailoverLoadBalancer(context, (FailOverLoadBalancer) target, (org.apache.camel.model.LoadBalanceDefinition) definition);
        } else if (target instanceof RandomLoadBalancer) {
            answer = new ManagedRandomLoadBalancer(context, (RandomLoadBalancer) target, (org.apache.camel.model.LoadBalanceDefinition) definition);
        } else if (target instanceof RoundRobinLoadBalancer) {
            answer = new ManagedRoundRobinLoadBalancer(context, (RoundRobinLoadBalancer) target, (org.apache.camel.model.LoadBalanceDefinition) definition);
        } else if (target instanceof StickyLoadBalancer) {
            answer = new ManagedStickyLoadBalancer(context, (StickyLoadBalancer) target, (org.apache.camel.model.LoadBalanceDefinition) definition);
        } else if (target instanceof TopicLoadBalancer) {
            answer = new ManagedTopicLoadBalancer(context, (TopicLoadBalancer) target, (org.apache.camel.model.LoadBalanceDefinition) definition);
        } else if (target instanceof WeightedLoadBalancer) {
            answer = new ManagedWeightedLoadBalancer(context, (WeightedLoadBalancer) target, (org.apache.camel.model.LoadBalanceDefinition) definition);
        } else if (target instanceof RecipientList) {
            answer = new ManagedRecipientList(context, (RecipientList) target, (RecipientListDefinition) definition);
        } else if (target instanceof Splitter) {
            answer = new ManagedSplitter(context, (Splitter) target, (org.apache.camel.model.SplitDefinition) definition);
        } else if (target instanceof MulticastProcessor) {
            answer = new ManagedMulticast(context, (MulticastProcessor) target, definition);
        } else if (target instanceof SamplingThrottler) {
            answer = new ManagedSamplingThrottler(context, (SamplingThrottler) target, definition);
        } else if (target instanceof Resequencer) {
            answer = new ManagedResequencer(context, (Resequencer) target, definition);
        } else if (target instanceof RollbackProcessor) {
            answer = new ManagedRollback(context, (RollbackProcessor) target, definition);
        } else if (target instanceof StreamResequencer) {
            answer = new ManagedResequencer(context, (StreamResequencer) target, definition);
        } else if (target instanceof SetBodyProcessor) {
            answer = new ManagedSetBody(context, (SetBodyProcessor) target, (org.apache.camel.model.SetBodyDefinition) definition);
        } else if (target instanceof RemoveHeaderProcessor) {
            answer = new ManagedRemoveHeader(context, (RemoveHeaderProcessor) target, definition);
        } else if (target instanceof RemoveHeadersProcessor) {
            answer = new ManagedRemoveHeaders(context, (RemoveHeadersProcessor) target, definition);
        } else if (target instanceof SetHeaderProcessor) {
            answer = new ManagedSetHeader(context, (SetHeaderProcessor) target, (org.apache.camel.model.SetHeaderDefinition) definition);
        } else if (target instanceof RemovePropertyProcessor) {
            answer = new ManagedRemoveProperty(context, (RemovePropertyProcessor) target, definition);
        } else if (target instanceof RemovePropertiesProcessor) {
            answer = new ManagedRemoveProperties(context, (RemovePropertiesProcessor) target, definition);
        } else if (target instanceof SetPropertyProcessor) {
            answer = new ManagedSetProperty(context, (SetPropertyProcessor) target, (org.apache.camel.model.SetPropertyDefinition) definition);
        } else if (target instanceof ExchangePatternProcessor) {
            answer = new ManagedSetExchangePattern(context, (ExchangePatternProcessor) target, definition);
        } else if (target instanceof ScriptProcessor) {
            answer = new ManagedScript(context, (ScriptProcessor) target, (org.apache.camel.model.ScriptDefinition) definition);
        } else if (target instanceof StopProcessor) {
            answer = new ManagedStop(context, (StopProcessor) target, definition);
        } else if (target instanceof ThreadsProcessor) {
            answer = new ManagedThreads(context, (ThreadsProcessor) target, definition);
        } else if (target instanceof ThrowExceptionProcessor) {
            answer = new ManagedThrowException(context, (ThrowExceptionProcessor) target, definition);
        } else if (target instanceof TransformProcessor) {
            answer = new ManagedTransformer(context, (TransformProcessor) target, (org.apache.camel.model.TransformDefinition) definition);
        } else if (target instanceof PredicateValidatingProcessor) {
            answer = new ManagedValidate(context, (PredicateValidatingProcessor) target, (org.apache.camel.model.ValidateDefinition) definition);
        } else if (target instanceof WireTapProcessor) {
            answer = new ManagedWireTapProcessor(context, (WireTapProcessor) target, definition);
        } else if (target instanceof SendDynamicProcessor) {
            answer = new ManagedSendDynamicProcessor(context, (SendDynamicProcessor) target, definition);
        } else if (target instanceof SendProcessor) {
            SendProcessor sp = (SendProcessor) target;
            // special for sending to throughput logger
            if (sp.getDestination() instanceof LogEndpoint) {
                LogEndpoint le = (LogEndpoint) sp.getDestination();
                if (le.getLogger() instanceof ThroughputLogger) {
                    ThroughputLogger tl = (ThroughputLogger) le.getLogger();
                    answer = new ManagedThroughputLogger(context, tl, definition);
                }
            }
            // regular send processor
            if (answer == null) {
                answer = new ManagedSendProcessor(context, (SendProcessor) target, definition);
            }
        } else if (target instanceof BeanProcessor) {
            answer = new ManagedBeanProcessor(context, (BeanProcessor) target, definition);
        } else if (target instanceof IdempotentConsumer) {
            answer = new ManagedIdempotentConsumer(context, (IdempotentConsumer) target, (org.apache.camel.model.IdempotentConsumerDefinition) definition);
        } else if (target instanceof AggregateProcessor) {
            answer = new ManagedAggregateProcessor(context, (AggregateProcessor) target, (org.apache.camel.model.AggregateDefinition) definition);
        } else if (target instanceof Enricher) {
            answer = new ManagedEnricher(context, (Enricher) target, (org.apache.camel.model.EnrichDefinition) definition);
        } else if (target instanceof PollEnricher) {
            answer = new ManagedPollEnricher(context, (PollEnricher) target, (org.apache.camel.model.PollEnrichDefinition) definition);
        } else if (target instanceof org.apache.camel.spi.ManagementAware) {
            return ((org.apache.camel.spi.ManagementAware<Processor>) target).getManagedObject(processor);
        }
        // special for custom load balancer
        if (definition instanceof LoadBalanceDefinition) {
            LoadBalanceDefinition lb = (LoadBalanceDefinition) definition;
            if (lb.getLoadBalancerType() instanceof CustomLoadBalancerDefinition) {
                answer = new ManagedCustomLoadBalancer(context, (LoadBalancer) target, (LoadBalanceDefinition) definition);
            }
        }
        if (answer != null) {
            // break out as we found an answer
            break;
        }
        // no answer yet, so unwrap any delegates and try again
        if (target instanceof DelegateProcessor) {
            target = ((DelegateProcessor) target).getProcessor();
        } else {
            // no delegate so we dont have any target to try next
            break;
        }
    }
    if (answer == null && definition instanceof ProcessDefinition) {
        answer = new ManagedProcess(context, target, (ProcessDefinition) definition);
    } else if (answer == null) {
        // fallback to a generic processor
        answer = new ManagedProcessor(context, target, definition);
    }
    answer.setRoute(route);
    answer.init(context.getManagementStrategy());
    return answer;
}
Also used : ManagedMarshal(org.apache.camel.management.mbean.ManagedMarshal) ManagedSplitter(org.apache.camel.management.mbean.ManagedSplitter) FilterProcessor(org.apache.camel.processor.FilterProcessor) UnmarshalProcessor(org.apache.camel.processor.UnmarshalProcessor) ManagedResequencer(org.apache.camel.management.mbean.ManagedResequencer) Resequencer(org.apache.camel.processor.Resequencer) StreamResequencer(org.apache.camel.processor.StreamResequencer) ManagedSetExchangePattern(org.apache.camel.management.mbean.ManagedSetExchangePattern) ManagedWeightedLoadBalancer(org.apache.camel.management.mbean.ManagedWeightedLoadBalancer) ManagedPollEnricher(org.apache.camel.management.mbean.ManagedPollEnricher) MarshalProcessor(org.apache.camel.processor.MarshalProcessor) ManagedThrottler(org.apache.camel.management.mbean.ManagedThrottler) ManagedThroughputLogger(org.apache.camel.management.mbean.ManagedThroughputLogger) ChoiceProcessor(org.apache.camel.processor.ChoiceProcessor) ManagedThrottler(org.apache.camel.management.mbean.ManagedThrottler) SamplingThrottler(org.apache.camel.processor.SamplingThrottler) Throttler(org.apache.camel.processor.Throttler) ManagedSamplingThrottler(org.apache.camel.management.mbean.ManagedSamplingThrottler) ManagedTopicLoadBalancer(org.apache.camel.management.mbean.ManagedTopicLoadBalancer) SetHeaderProcessor(org.apache.camel.processor.SetHeaderProcessor) ManagedRemoveProperties(org.apache.camel.management.mbean.ManagedRemoveProperties) ManagedRecipientList(org.apache.camel.management.mbean.ManagedRecipientList) ManagedIdempotentConsumer(org.apache.camel.management.mbean.ManagedIdempotentConsumer) ManagedValidate(org.apache.camel.management.mbean.ManagedValidate) ConvertBodyProcessor(org.apache.camel.processor.ConvertBodyProcessor) ManagedLoop(org.apache.camel.management.mbean.ManagedLoop) MulticastProcessor(org.apache.camel.processor.MulticastProcessor) ManagedRollback(org.apache.camel.management.mbean.ManagedRollback) LogEndpoint(org.apache.camel.component.log.LogEndpoint) WireTapProcessor(org.apache.camel.processor.WireTapProcessor) ManagedWireTapProcessor(org.apache.camel.management.mbean.ManagedWireTapProcessor) ManagedScript(org.apache.camel.management.mbean.ManagedScript) ScriptProcessor(org.apache.camel.processor.ScriptProcessor) ManagedSendDynamicProcessor(org.apache.camel.management.mbean.ManagedSendDynamicProcessor) PredicateValidatingProcessor(org.apache.camel.processor.validation.PredicateValidatingProcessor) WireTapProcessor(org.apache.camel.processor.WireTapProcessor) LogProcessor(org.apache.camel.processor.LogProcessor) ManagedBeanProcessor(org.apache.camel.management.mbean.ManagedBeanProcessor) StopProcessor(org.apache.camel.processor.StopProcessor) TransformProcessor(org.apache.camel.processor.TransformProcessor) BeanProcessor(org.apache.camel.component.bean.BeanProcessor) ThrowExceptionProcessor(org.apache.camel.processor.ThrowExceptionProcessor) RemoveHeadersProcessor(org.apache.camel.processor.RemoveHeadersProcessor) SendProcessor(org.apache.camel.processor.SendProcessor) MarshalProcessor(org.apache.camel.processor.MarshalProcessor) LoopProcessor(org.apache.camel.processor.LoopProcessor) SetHeaderProcessor(org.apache.camel.processor.SetHeaderProcessor) UnmarshalProcessor(org.apache.camel.processor.UnmarshalProcessor) RemoveHeaderProcessor(org.apache.camel.processor.RemoveHeaderProcessor) RemovePropertiesProcessor(org.apache.camel.processor.RemovePropertiesProcessor) MulticastProcessor(org.apache.camel.processor.MulticastProcessor) FilterProcessor(org.apache.camel.processor.FilterProcessor) SetPropertyProcessor(org.apache.camel.processor.SetPropertyProcessor) ThreadsProcessor(org.apache.camel.processor.ThreadsProcessor) ExchangePatternProcessor(org.apache.camel.processor.ExchangePatternProcessor) SetBodyProcessor(org.apache.camel.processor.SetBodyProcessor) SendDynamicProcessor(org.apache.camel.processor.SendDynamicProcessor) ManagedProcessor(org.apache.camel.management.mbean.ManagedProcessor) ChoiceProcessor(org.apache.camel.processor.ChoiceProcessor) RollbackProcessor(org.apache.camel.processor.RollbackProcessor) DelegateProcessor(org.apache.camel.DelegateProcessor) ManagedAggregateProcessor(org.apache.camel.management.mbean.ManagedAggregateProcessor) ManagedWireTapProcessor(org.apache.camel.management.mbean.ManagedWireTapProcessor) RemovePropertyProcessor(org.apache.camel.processor.RemovePropertyProcessor) Processor(org.apache.camel.Processor) ScriptProcessor(org.apache.camel.processor.ScriptProcessor) ConvertBodyProcessor(org.apache.camel.processor.ConvertBodyProcessor) ManagedSendProcessor(org.apache.camel.management.mbean.ManagedSendProcessor) AggregateProcessor(org.apache.camel.processor.aggregate.AggregateProcessor) ThreadsProcessor(org.apache.camel.processor.ThreadsProcessor) LoopProcessor(org.apache.camel.processor.LoopProcessor) SetPropertyProcessor(org.apache.camel.processor.SetPropertyProcessor) ExchangePatternProcessor(org.apache.camel.processor.ExchangePatternProcessor) ManagedRandomLoadBalancer(org.apache.camel.management.mbean.ManagedRandomLoadBalancer) ManagedSendProcessor(org.apache.camel.management.mbean.ManagedSendProcessor) ManagedCustomLoadBalancer(org.apache.camel.management.mbean.ManagedCustomLoadBalancer) RemoveHeadersProcessor(org.apache.camel.processor.RemoveHeadersProcessor) ManagedRemoveHeaders(org.apache.camel.management.mbean.ManagedRemoveHeaders) ManagedRoutingSlip(org.apache.camel.management.mbean.ManagedRoutingSlip) RoutingSlip(org.apache.camel.processor.RoutingSlip) ManagedProcessor(org.apache.camel.management.mbean.ManagedProcessor) ThrowExceptionProcessor(org.apache.camel.processor.ThrowExceptionProcessor) ManagedFilter(org.apache.camel.management.mbean.ManagedFilter) ManagedAggregateProcessor(org.apache.camel.management.mbean.ManagedAggregateProcessor) ManagedRemoveHeader(org.apache.camel.management.mbean.ManagedRemoveHeader) CustomLoadBalancerDefinition(org.apache.camel.model.loadbalancer.CustomLoadBalancerDefinition) ManagedChoice(org.apache.camel.management.mbean.ManagedChoice) RemovePropertiesProcessor(org.apache.camel.processor.RemovePropertiesProcessor) LogProcessor(org.apache.camel.processor.LogProcessor) ManagedEnricher(org.apache.camel.management.mbean.ManagedEnricher) RemovePropertyProcessor(org.apache.camel.processor.RemovePropertyProcessor) ManagedSendDynamicProcessor(org.apache.camel.management.mbean.ManagedSendDynamicProcessor) Pipeline(org.apache.camel.processor.Pipeline) ManagedProcess(org.apache.camel.management.mbean.ManagedProcess) ManagedSetProperty(org.apache.camel.management.mbean.ManagedSetProperty) ExpressionNode(org.apache.camel.model.ExpressionNode) SamplingThrottler(org.apache.camel.processor.SamplingThrottler) ManagedSamplingThrottler(org.apache.camel.management.mbean.ManagedSamplingThrottler) RollbackProcessor(org.apache.camel.processor.RollbackProcessor) ManagedThreads(org.apache.camel.management.mbean.ManagedThreads) SendProcessor(org.apache.camel.processor.SendProcessor) ManagedSendProcessor(org.apache.camel.management.mbean.ManagedSendProcessor) ManagedIdempotentConsumer(org.apache.camel.management.mbean.ManagedIdempotentConsumer) IdempotentConsumer(org.apache.camel.processor.idempotent.IdempotentConsumer) ManagedTransformer(org.apache.camel.management.mbean.ManagedTransformer) LoadBalanceDefinition(org.apache.camel.model.LoadBalanceDefinition) SetBodyProcessor(org.apache.camel.processor.SetBodyProcessor) FailOverLoadBalancer(org.apache.camel.processor.loadbalancer.FailOverLoadBalancer) ProcessDefinition(org.apache.camel.model.ProcessDefinition) ManagedDelayer(org.apache.camel.management.mbean.ManagedDelayer) CircuitBreakerLoadBalancer(org.apache.camel.processor.loadbalancer.CircuitBreakerLoadBalancer) ManagedCircuitBreakerLoadBalancer(org.apache.camel.management.mbean.ManagedCircuitBreakerLoadBalancer) Enricher(org.apache.camel.processor.Enricher) PollEnricher(org.apache.camel.processor.PollEnricher) ManagedPollEnricher(org.apache.camel.management.mbean.ManagedPollEnricher) ManagedEnricher(org.apache.camel.management.mbean.ManagedEnricher) ManagedWireTapProcessor(org.apache.camel.management.mbean.ManagedWireTapProcessor) ManagedRoutingSlip(org.apache.camel.management.mbean.ManagedRoutingSlip) ManagedRandomLoadBalancer(org.apache.camel.management.mbean.ManagedRandomLoadBalancer) RandomLoadBalancer(org.apache.camel.processor.loadbalancer.RandomLoadBalancer) ManagedSamplingThrottler(org.apache.camel.management.mbean.ManagedSamplingThrottler) ManagedSetHeader(org.apache.camel.management.mbean.ManagedSetHeader) TransformProcessor(org.apache.camel.processor.TransformProcessor) RemoveHeaderProcessor(org.apache.camel.processor.RemoveHeaderProcessor) ErrorHandler(org.apache.camel.processor.ErrorHandler) ManagedErrorHandler(org.apache.camel.management.mbean.ManagedErrorHandler) ManagedCircuitBreakerLoadBalancer(org.apache.camel.management.mbean.ManagedCircuitBreakerLoadBalancer) ManagedTopicLoadBalancer(org.apache.camel.management.mbean.ManagedTopicLoadBalancer) ManagedWeightedLoadBalancer(org.apache.camel.management.mbean.ManagedWeightedLoadBalancer) CircuitBreakerLoadBalancer(org.apache.camel.processor.loadbalancer.CircuitBreakerLoadBalancer) StickyLoadBalancer(org.apache.camel.processor.loadbalancer.StickyLoadBalancer) WeightedLoadBalancer(org.apache.camel.processor.loadbalancer.WeightedLoadBalancer) ManagedRandomLoadBalancer(org.apache.camel.management.mbean.ManagedRandomLoadBalancer) ManagedCustomLoadBalancer(org.apache.camel.management.mbean.ManagedCustomLoadBalancer) RoundRobinLoadBalancer(org.apache.camel.processor.loadbalancer.RoundRobinLoadBalancer) TopicLoadBalancer(org.apache.camel.processor.loadbalancer.TopicLoadBalancer) ManagedFailoverLoadBalancer(org.apache.camel.management.mbean.ManagedFailoverLoadBalancer) FailOverLoadBalancer(org.apache.camel.processor.loadbalancer.FailOverLoadBalancer) LoadBalancer(org.apache.camel.processor.loadbalancer.LoadBalancer) ManagedStickyLoadBalancer(org.apache.camel.management.mbean.ManagedStickyLoadBalancer) ManagedCircuitBreakerLoadBalancer(org.apache.camel.management.mbean.ManagedCircuitBreakerLoadBalancer) RandomLoadBalancer(org.apache.camel.processor.loadbalancer.RandomLoadBalancer) ManagedRoundRobinLoadBalancer(org.apache.camel.management.mbean.ManagedRoundRobinLoadBalancer) ManagedWeightedLoadBalancer(org.apache.camel.management.mbean.ManagedWeightedLoadBalancer) WeightedLoadBalancer(org.apache.camel.processor.loadbalancer.WeightedLoadBalancer) ManagedRemoveProperty(org.apache.camel.management.mbean.ManagedRemoveProperty) ManagedAggregateProcessor(org.apache.camel.management.mbean.ManagedAggregateProcessor) AggregateProcessor(org.apache.camel.processor.aggregate.AggregateProcessor) ManagedStickyLoadBalancer(org.apache.camel.management.mbean.ManagedStickyLoadBalancer) StreamResequencer(org.apache.camel.processor.StreamResequencer) ManagedThroughputLogger(org.apache.camel.management.mbean.ManagedThroughputLogger) ThroughputLogger(org.apache.camel.processor.ThroughputLogger) PredicateValidatingProcessor(org.apache.camel.processor.validation.PredicateValidatingProcessor) ManagedResequencer(org.apache.camel.management.mbean.ManagedResequencer) ManagedLog(org.apache.camel.management.mbean.ManagedLog) RoundRobinLoadBalancer(org.apache.camel.processor.loadbalancer.RoundRobinLoadBalancer) ManagedRoundRobinLoadBalancer(org.apache.camel.management.mbean.ManagedRoundRobinLoadBalancer) ManagedRecipientList(org.apache.camel.management.mbean.ManagedRecipientList) RecipientList(org.apache.camel.processor.RecipientList) ManagedConvertBody(org.apache.camel.management.mbean.ManagedConvertBody) PollEnricher(org.apache.camel.processor.PollEnricher) ManagedPollEnricher(org.apache.camel.management.mbean.ManagedPollEnricher) Iterator(java.util.Iterator) ManagedMulticast(org.apache.camel.management.mbean.ManagedMulticast) ManagedStop(org.apache.camel.management.mbean.ManagedStop) RecipientListDefinition(org.apache.camel.model.RecipientListDefinition) ManagedSplitter(org.apache.camel.management.mbean.ManagedSplitter) Splitter(org.apache.camel.processor.Splitter) StopProcessor(org.apache.camel.processor.StopProcessor) ManagedFailoverLoadBalancer(org.apache.camel.management.mbean.ManagedFailoverLoadBalancer) ManagedBeanProcessor(org.apache.camel.management.mbean.ManagedBeanProcessor) BeanProcessor(org.apache.camel.component.bean.BeanProcessor) ThreadsDefinition(org.apache.camel.model.ThreadsDefinition) StickyLoadBalancer(org.apache.camel.processor.loadbalancer.StickyLoadBalancer) ManagedStickyLoadBalancer(org.apache.camel.management.mbean.ManagedStickyLoadBalancer) ManagedDynamicRouter(org.apache.camel.management.mbean.ManagedDynamicRouter) DynamicRouter(org.apache.camel.processor.DynamicRouter) ManagedDelayer(org.apache.camel.management.mbean.ManagedDelayer) Delayer(org.apache.camel.processor.Delayer) ManagedSendDynamicProcessor(org.apache.camel.management.mbean.ManagedSendDynamicProcessor) SendDynamicProcessor(org.apache.camel.processor.SendDynamicProcessor) ManagedBeanProcessor(org.apache.camel.management.mbean.ManagedBeanProcessor) ManagedTopicLoadBalancer(org.apache.camel.management.mbean.ManagedTopicLoadBalancer) TopicLoadBalancer(org.apache.camel.processor.loadbalancer.TopicLoadBalancer) ManagedDynamicRouter(org.apache.camel.management.mbean.ManagedDynamicRouter) ManagedUnmarshal(org.apache.camel.management.mbean.ManagedUnmarshal) DelegateProcessor(org.apache.camel.DelegateProcessor) ManagedThrowException(org.apache.camel.management.mbean.ManagedThrowException) ManagedRoundRobinLoadBalancer(org.apache.camel.management.mbean.ManagedRoundRobinLoadBalancer) ManagedSetBody(org.apache.camel.management.mbean.ManagedSetBody)

Example 5 with MulticastProcessor

use of org.apache.camel.processor.MulticastProcessor in project camel by apache.

the class SedaConsumer method sendToConsumers.

/**
     * Send the given {@link Exchange} to the consumer(s).
     * <p/>
     * If multiple consumers then they will each receive a copy of the Exchange.
     * A multicast processor will send the exchange in parallel to the multiple consumers.
     * <p/>
     * If there is only a single consumer then its dispatched directly to it using same thread.
     * 
     * @param exchange the exchange
     * @throws Exception can be thrown if processing of the exchange failed
     */
protected void sendToConsumers(final Exchange exchange) throws Exception {
    // validate multiple consumers has been enabled
    int size = endpoint.getConsumers().size();
    if (size > 1 && !endpoint.isMultipleConsumersSupported()) {
        throw new IllegalStateException("Multiple consumers for the same endpoint is not allowed: " + endpoint);
    }
    // if there are multiple consumers then multicast to them
    if (endpoint.isMultipleConsumersSupported()) {
        if (LOG.isTraceEnabled()) {
            LOG.trace("Multicasting to {} consumers for Exchange: {}", size, exchange);
        }
        // handover completions, as we need to done this when the multicast is done
        final List<Synchronization> completions = exchange.handoverCompletions();
        // use a multicast processor to process it
        MulticastProcessor mp = endpoint.getConsumerMulticastProcessor();
        ObjectHelper.notNull(mp, "ConsumerMulticastProcessor", this);
        // and use the asynchronous routing engine to support it
        mp.process(exchange, new AsyncCallback() {

            public void done(boolean doneSync) {
                // done the uow on the completions
                UnitOfWorkHelper.doneSynchronizations(exchange, completions, LOG);
            }
        });
    } else {
        // use the regular processor and use the asynchronous routing engine to support it
        processor.process(exchange, new AsyncCallback() {

            public void done(boolean doneSync) {
            // noop
            }
        });
    }
}
Also used : AsyncCallback(org.apache.camel.AsyncCallback) MulticastProcessor(org.apache.camel.processor.MulticastProcessor) Synchronization(org.apache.camel.spi.Synchronization) Endpoint(org.apache.camel.Endpoint)

Aggregations

MulticastProcessor (org.apache.camel.processor.MulticastProcessor)6 Processor (org.apache.camel.Processor)5 ArrayList (java.util.ArrayList)3 DelegateProcessor (org.apache.camel.DelegateProcessor)2 Endpoint (org.apache.camel.Endpoint)2 Iterator (java.util.Iterator)1 ExecutorService (java.util.concurrent.ExecutorService)1 AsyncCallback (org.apache.camel.AsyncCallback)1 AsyncEndpoint (org.apache.camel.AsyncEndpoint)1 Channel (org.apache.camel.Channel)1 Route (org.apache.camel.Route)1 BeanProcessor (org.apache.camel.component.bean.BeanProcessor)1 LogEndpoint (org.apache.camel.component.log.LogEndpoint)1 DefaultEndpoint (org.apache.camel.impl.DefaultEndpoint)1 EventDrivenConsumerRoute (org.apache.camel.impl.EventDrivenConsumerRoute)1 ManagedAggregateProcessor (org.apache.camel.management.mbean.ManagedAggregateProcessor)1 ManagedBeanProcessor (org.apache.camel.management.mbean.ManagedBeanProcessor)1 ManagedChoice (org.apache.camel.management.mbean.ManagedChoice)1 ManagedCircuitBreakerLoadBalancer (org.apache.camel.management.mbean.ManagedCircuitBreakerLoadBalancer)1 ManagedConvertBody (org.apache.camel.management.mbean.ManagedConvertBody)1