Hi Willem Well spotted.
Remember to remove the @deprecated in the javadoc from the camel 1.x On Thu, Jan 22, 2009 at 4:12 AM, Willem Jiang <willem.ji...@gmail.com> wrote: > Hi Claus, > > I'm sorry we need to revert this change because I did not take a good > look at the LoadBalancerConsumer. > > For the browser endpoint , if there are more than one > from(BROWSER_ENDPOINT)... rule in the camel contextg, current change > doesn't work. In this case the last from(BROWSER_ENDPOINT) will be called. > > LoadBalancerConusumer give us ability to set difference LoadBalancer on > the consumers of this endpoint. > > From this respect we can't remove the TopicLoadBalancer. > > I will clean it up. > > Willem > > davscl...@apache.org wrote: >> Author: davsclaus >> Date: Wed Jan 21 03:29:52 2009 >> New Revision: 736287 >> >> URL: http://svn.apache.org/viewvc?rev=736287&view=rev >> Log: >> Removed @deprecated TopicLoadBalancer. Use Multicast instead. >> >> Removed: >> >> camel/trunk/camel-core/src/main/java/org/apache/camel/model/loadbalancer/TopicLoadBalanceStrategy.java >> >> camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/TopicLoadBalancer.java >> Modified: >> >> camel/trunk/camel-core/src/main/java/org/apache/camel/component/browse/BrowseEndpoint.java >> >> camel/trunk/camel-core/src/main/java/org/apache/camel/model/LoadBalanceType.java >> >> camel/trunk/camel-core/src/main/resources/org/apache/camel/model/loadbalancer/jaxb.index >> >> camel/trunk/components/camel-spring/src/main/java/org/apache/camel/component/event/EventEndpoint.java >> >> camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java >> >> Modified: >> camel/trunk/camel-core/src/main/java/org/apache/camel/component/browse/BrowseEndpoint.java >> URL: >> http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/browse/BrowseEndpoint.java?rev=736287&r1=736286&r2=736287&view=diff >> ============================================================================== >> --- >> camel/trunk/camel-core/src/main/java/org/apache/camel/component/browse/BrowseEndpoint.java >> (original) >> +++ >> camel/trunk/camel-core/src/main/java/org/apache/camel/component/browse/BrowseEndpoint.java >> Wed Jan 21 03:29:52 2009 >> @@ -16,8 +16,6 @@ >> */ >> package org.apache.camel.component.browse; >> >> -import java.beans.PropertyChangeListener; >> -import java.beans.PropertyChangeSupport; >> import java.util.List; >> import java.util.concurrent.CopyOnWriteArrayList; >> >> @@ -28,10 +26,9 @@ >> import org.apache.camel.Processor; >> import org.apache.camel.Producer; >> import org.apache.camel.Service; >> +import org.apache.camel.impl.DefaultConsumer; >> import org.apache.camel.impl.DefaultEndpoint; >> import org.apache.camel.impl.DefaultProducer; >> -import org.apache.camel.processor.loadbalancer.LoadBalancerConsumer; >> -import org.apache.camel.processor.loadbalancer.TopicLoadBalancer; >> import org.apache.camel.spi.BrowsableEndpoint; >> >> /** >> @@ -42,9 +39,10 @@ >> */ >> public class BrowseEndpoint extends DefaultEndpoint implements >> BrowsableEndpoint, Service { >> private List<Exchange> exchanges; >> - private TopicLoadBalancer loadBalancer = new TopicLoadBalancer(); >> - // TODO: firing of property changes not implemented >> - private PropertyChangeSupport propertyChangeSupport = new >> PropertyChangeSupport(this); >> + private Processor processor; >> + >> + public BrowseEndpoint() { >> + } >> >> public BrowseEndpoint(String uri, CamelContext camelContext) { >> super(uri, camelContext); >> @@ -66,18 +64,6 @@ >> return exchanges; >> } >> >> - public TopicLoadBalancer getLoadBalancer() { >> - return loadBalancer; >> - } >> - >> - public void addPropertyChangeListener(PropertyChangeListener listener) { >> - propertyChangeSupport.addPropertyChangeListener(listener); >> - } >> - >> - public void removePropertyChangeListener(PropertyChangeListener >> listener) { >> - propertyChangeSupport.removePropertyChangeListener(listener); >> - } >> - >> public Producer createProducer() throws Exception { >> return new DefaultProducer(this) { >> public void process(Exchange exchange) throws Exception { >> @@ -87,7 +73,8 @@ >> } >> >> public Consumer createConsumer(Processor processor) throws Exception { >> - return new LoadBalancerConsumer(this, processor, loadBalancer); >> + this.processor = processor; >> + return new DefaultConsumer(this, processor); >> } >> >> protected List<Exchange> createExchangeList() { >> @@ -101,10 +88,13 @@ >> * @throws Exception is thrown if failed to process the exchange >> */ >> protected void onExchange(Exchange exchange) throws Exception { >> - exchanges.add(exchange); >> + // add a copy of the Exchange at the given time >> + exchanges.add(exchange.copy()); >> >> - // lets fire any consumers >> - loadBalancer.process(exchange); >> + // lets continue processing if there are any consumers >> + if (processor != null) { >> + processor.process(exchange); >> + } >> } >> >> public void start() throws Exception { >> >> Modified: >> camel/trunk/camel-core/src/main/java/org/apache/camel/model/LoadBalanceType.java >> URL: >> http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/LoadBalanceType.java?rev=736287&r1=736286&r2=736287&view=diff >> ============================================================================== >> --- >> camel/trunk/camel-core/src/main/java/org/apache/camel/model/LoadBalanceType.java >> (original) >> +++ >> camel/trunk/camel-core/src/main/java/org/apache/camel/model/LoadBalanceType.java >> Wed Jan 21 03:29:52 2009 >> @@ -34,13 +34,11 @@ >> import org.apache.camel.model.loadbalancer.RandomLoadBalanceStrategy; >> import org.apache.camel.model.loadbalancer.RoundRobinLoadBalanceStrategy; >> import org.apache.camel.model.loadbalancer.StickyLoadBalanceStrategy; >> -import org.apache.camel.model.loadbalancer.TopicLoadBalanceStrategy; >> import org.apache.camel.processor.SendProcessor; >> import org.apache.camel.processor.loadbalancer.LoadBalancer; >> import org.apache.camel.processor.loadbalancer.RandomLoadBalancer; >> import org.apache.camel.processor.loadbalancer.RoundRobinLoadBalancer; >> import org.apache.camel.processor.loadbalancer.StickyLoadBalancer; >> -import org.apache.camel.processor.loadbalancer.TopicLoadBalancer; >> import org.apache.camel.spi.RouteContext; >> import org.apache.camel.util.CollectionStringBuffer; >> >> @@ -56,8 +54,7 @@ >> @XmlElements({ >> @XmlElement(required = false, name = "roundRobin", type = >> RoundRobinLoadBalanceStrategy.class), >> @XmlElement(required = false, name = "random", type = >> RandomLoadBalanceStrategy.class), >> - @XmlElement(required = false, name = "sticky", type = >> StickyLoadBalanceStrategy.class), >> - @XmlElement(required = false, name = "topic", type = >> TopicLoadBalanceStrategy.class)} >> + @XmlElement(required = false, name = "sticky", type = >> StickyLoadBalanceStrategy.class)} >> ) >> private LoadBalancerType loadBalancerType; >> >> @@ -176,16 +173,6 @@ >> return this; >> } >> >> - /** >> - * Uses topic load balancer >> - * >> - * @return the builder >> - */ >> - public LoadBalanceType topic() { >> - loadBalancerType = new LoadBalancerType(new TopicLoadBalancer()); >> - return this; >> - } >> - >> @Override >> public String getLabel() { >> CollectionStringBuffer buffer = new CollectionStringBuffer(); >> >> Modified: >> camel/trunk/camel-core/src/main/resources/org/apache/camel/model/loadbalancer/jaxb.index >> URL: >> http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/resources/org/apache/camel/model/loadbalancer/jaxb.index?rev=736287&r1=736286&r2=736287&view=diff >> ============================================================================== >> --- >> camel/trunk/camel-core/src/main/resources/org/apache/camel/model/loadbalancer/jaxb.index >> (original) >> +++ >> camel/trunk/camel-core/src/main/resources/org/apache/camel/model/loadbalancer/jaxb.index >> Wed Jan 21 03:29:52 2009 >> @@ -17,5 +17,4 @@ >> LoadBalancerType >> RandomLoadBalanceStrategy >> RoundRobinLoadBalanceStrategy >> -StickyLoadBalanceStrategy >> -TopicLoadBalanceStrategy >> \ No newline at end of file >> +StickyLoadBalanceStrategy >> \ No newline at end of file >> >> Modified: >> camel/trunk/components/camel-spring/src/main/java/org/apache/camel/component/event/EventEndpoint.java >> URL: >> http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/component/event/EventEndpoint.java?rev=736287&r1=736286&r2=736287&view=diff >> ============================================================================== >> --- >> camel/trunk/components/camel-spring/src/main/java/org/apache/camel/component/event/EventEndpoint.java >> (original) >> +++ >> camel/trunk/components/camel-spring/src/main/java/org/apache/camel/component/event/EventEndpoint.java >> Wed Jan 21 03:29:52 2009 >> @@ -16,22 +16,22 @@ >> */ >> package org.apache.camel.component.event; >> >> +import java.util.ArrayList; >> + >> import org.apache.camel.Exchange; >> import org.apache.camel.NoTypeConversionAvailableException; >> import org.apache.camel.Processor; >> import org.apache.camel.Producer; >> import org.apache.camel.impl.DefaultEndpoint; >> import org.apache.camel.impl.DefaultProducer; >> -import org.apache.camel.processor.loadbalancer.LoadBalancer; >> -import org.apache.camel.processor.loadbalancer.TopicLoadBalancer; >> +import org.apache.camel.processor.MulticastProcessor; >> import org.apache.camel.util.ObjectHelper; >> +import static org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException; >> import org.springframework.beans.BeansException; >> import org.springframework.context.ApplicationContext; >> import org.springframework.context.ApplicationContextAware; >> import org.springframework.context.ApplicationEvent; >> >> -import static org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException; >> - >> >> /** >> * An <a href="http://activemq.apache.org/camel/event.html">Event >> Endpoint</a> >> @@ -40,7 +40,7 @@ >> * @version $Revision$ >> */ >> public class EventEndpoint extends DefaultEndpoint implements >> ApplicationContextAware { >> - private LoadBalancer loadBalancer; >> + private MulticastProcessor processor; >> private ApplicationContext applicationContext; >> >> public EventEndpoint(String endpointUri, EventComponent component) { >> @@ -82,35 +82,27 @@ >> Exchange exchange = createExchange(); >> exchange.getIn().setBody(event); >> try { >> - getLoadBalancer().process(exchange); >> + getMulticastProcessor().process(exchange); >> } catch (Exception e) { >> throw wrapRuntimeCamelException(e); >> } >> } >> >> - public LoadBalancer getLoadBalancer() { >> - if (loadBalancer == null) { >> - loadBalancer = createLoadBalancer(); >> + protected synchronized MulticastProcessor getMulticastProcessor() { >> + if (processor == null) { >> + processor = new MulticastProcessor(new ArrayList<Processor>()); >> } >> - return loadBalancer; >> - } >> - >> - public void setLoadBalancer(LoadBalancer loadBalancer) { >> - this.loadBalancer = loadBalancer; >> + return processor; >> } >> >> // Implementation methods >> // >> ------------------------------------------------------------------------- >> public synchronized void consumerStarted(EventConsumer consumer) { >> - getLoadBalancer().addProcessor(consumer.getProcessor()); >> + >> getMulticastProcessor().getProcessors().add(consumer.getProcessor()); >> } >> >> public synchronized void consumerStopped(EventConsumer consumer) { >> - getLoadBalancer().removeProcessor(consumer.getProcessor()); >> - } >> - >> - protected LoadBalancer createLoadBalancer() { >> - return new TopicLoadBalancer(); >> + >> getMulticastProcessor().getProcessors().remove(consumer.getProcessor()); >> } >> >> protected ApplicationEvent toApplicationEvent(Exchange exchange) { >> >> Modified: >> camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java >> URL: >> http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java?rev=736287&r1=736286&r2=736287&view=diff >> ============================================================================== >> --- >> camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java >> (original) >> +++ >> camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java >> Wed Jan 21 03:29:52 2009 >> @@ -38,7 +38,6 @@ >> import org.apache.camel.model.loadbalancer.RandomLoadBalanceStrategy; >> import org.apache.camel.model.loadbalancer.RoundRobinLoadBalanceStrategy; >> import org.apache.camel.model.loadbalancer.StickyLoadBalanceStrategy; >> -import org.apache.camel.model.loadbalancer.TopicLoadBalanceStrategy; >> import org.apache.camel.spi.NamespaceAware; >> import org.apache.camel.spring.CamelBeanPostProcessor; >> import org.apache.camel.spring.CamelContextFactoryBean; >> @@ -91,7 +90,6 @@ >> addBeanDefinitionParser("roundRobin", >> RoundRobinLoadBalanceStrategy.class); >> addBeanDefinitionParser("random", RandomLoadBalanceStrategy.class); >> addBeanDefinitionParser("sticky", StickyLoadBalanceStrategy.class); >> - addBeanDefinitionParser("topic", TopicLoadBalanceStrategy.class); >> >> // jmx agent >> addBeanDefinitionParser("jmxAgent", CamelJMXAgentType.class); >> >> >> > > -- Claus Ibsen Apache Camel Committer Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/