camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sergey_Zhemzhit...@troika.ru
Subject Re: Is it possible to cluster camel endpoint?
Date Thu, 25 Nov 2010 11:35:13 GMT
Hi Jeremie

You're right. I have looked through 
org.apache.servicemix.jbi.cluster.engine.ClusterEngine and it seems that 
it is not possible to share camel endpoints by mens of it.





Jérémie <jeremie.brebec@gmail.com> 
25.11.2010 13:17
Please respond to
users@camel.apache.org


To
users@camel.apache.org
cc

Subject
Re: Is it possible to cluster camel endpoint?






Hi,

I have the same requirement : Using shared NMR endpoints with camel.

After reading the source of the NMR implementation of smx :
- NMR Endpoint are not automatically shared. You have to declare them 
using
a ClusterRegistration and configure the "JBI Cluster Engine" (smx come 
with
a spring xml with defaults values which should work - maybe just rename 
the
cluster of each smx instance)

The registration is something like this :

<bean 
class="org.apache.servicemix.jbi.cluster.engine.OsgiSimpleClusterRegistration">
        <property name="endpointName" value="xxx" />
 </bean>


I managed to call from camel a remote "standard" nmr endpoint (in fact a 
JBI
Component), but this did'nt work with a nmr consumer created with camel. 
In
fact, only a NMR Endpoint producing message in his channel can be shared
between node, because the ClusterEngine use hook through EndpointListener,
or something like that. Camel NMR Endpoint are just consumer, and in this
case, the ClusterEngine can't see it.

Of course, i did'nt find any usefull documentation about this part, so i 
can
be wrong :-)

In my project, i have replaced all nmr endpoint with activemq. I don't see
the benefice of using NMR Endpoints in a distributed environment (?).


Jeremie

On Thu, Nov 25, 2010 at 9:58 AM, <Sergey_Zhemzhitsky@troika.ru> wrote:

> I've removed the nmr. Exception
> "org.apache.servicemix.nmr.api.ServiceMixException: Could not dispatch
> exchange. No matching endpoints." still happens.
>
> Is NMR camel endpoint shared accross multiple nodes of a cluster? And is
> declaration of "org.apache.servicemix.common.osgi.EndpointExporter"
> required?
>
> Accorging to the source code of EndpointExporter
>
> public Collection<Endpoint> getEndpoints() {
>    Collection<Endpoint> eps = this.endpoints;
>    if (eps == null) {
>        eps = this.applicationContext.getBeansOfType(Endpoint.class
> ).values();
>    }
>    return eps;
> }
>
> it requres org.apache.servicemix.common.Endpoint, so it is not 
applicable
> to org.apache.camel.Endpoint created by camel.
>
> I'm asking because I have a route that produces events and publishes 
them
> to a camel's nmr enpoint on one node of a cluster (separate servicemix
> instance) and I have a route that listens to events on a canel's nmr
> enpoint on the second node of the same cluster.
>
> I have changed etc/activemq-broker.xml on both nodes of a cluster so 
that
> they will know about each other
>
> node1:
>
> <networkConnectors>
>    <networkConnector uri="static://(tcp://localhost:62616)"
> conduitSubscriptions="false"/>
> </networkConnectors>
>
> node2:
>
> <networkConnectors>
>    <networkConnector uri="static://(tcp://localhost:63616)"
> conduitSubscriptions="false"/>
> </networkConnectors>
>
> How to make sure that the cluster is working and is it possible to share
> org.apache.camel.Endpoint accross the cluster?
>
>
>
>
>
> Claus Ibsen <claus.ibsen@gmail.com>
> 25.11.2010 11:09
> Please respond to
> users@camel.apache.org
>
>
> To
> users@camel.apache.org
> cc
>
> Subject
> Re: Is it possible to cluster camel endpoint?
>
>
>
>
>
>
> Hi
>
> Try removing the nmr bean, as it should work out of the box, without
> the need to specify such a bean.
>
> This should be removed:
>
> <bean id="nmr"
> class="org.apache.servicemix.camel.nmr.ServiceMixComponent">
>       <property name="nmr">
>           <osgi:reference
> interface="org.apache.servicemix.nmr.api.NMR"/>
>       </property>
>   </bean>
>
> On Thu, Nov 25, 2010 at 7:12 AM,  <Sergey_Zhemzhitsky@troika.ru> wrote:
> > Hi there
> >
> > I'm not using JBI. Each route is deployed as OSGi bundle.
> >
> >
> >
> >
> >
> > Claus Ibsen <claus.ibsen@gmail.com>
> > 24.11.2010 20:15
> > Please respond to
> > users@camel.apache.org
> >
> >
> > To
> > users@camel.apache.org
> > cc
> >
> > Subject
> > Re: Is it possible to cluster camel endpoint?
> >
> >
> >
> >
> >
> >
> > Hi
> >
> > Are you using JBI or not? The last statement was kinda confusing how I
> > read it.
> >
> > If you use JBI I suggest to use jbi to pass messages between
> applications.
> >
> >
> > On Wed, Nov 24, 2010 at 5:01 PM,  <Sergey_Zhemzhitsky@troika.ru> 
wrote:
> >> Well, it seems that my attachments have been dropped.
> >>
> >> Here are camel routes:
> >>
> >> route for cluster node 1:
> >>
> >> <?xml version="1.0" encoding="UTF-8"?>
> >>
> >> <beans xmlns="http://www.springframework.org/schema/beans"
> >>       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> >>       xmlns:osgi="http://www.springframework.org/schema/osgi"
> >>       xsi:schemaLocation="http://www.springframework.org/schema/beans
> >> http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
> >>                           http://camel.apache.org/schema/spring
> >> http://camel.apache.org/schema/spring/camel-spring.xsd
> >>                           http://www.springframework.org/schema/osgi
> >> http://www.springframework.org/schema/osgi/spring-osgi.xsd">
> >>
> >>    <camelContext id="smx.cluster.publisher" xmlns="
> >> http://camel.apache.org/schema/spring">
> >>        <route id="publishRoute">
> >>            <from 
uri="timer://events?fixedRate=true&amp;period=1000"/>
> >>            <transform>
> >>                <constant>Hello World!!!</constant>
> >>            </transform>
> >>            <multicast>
> >>                <to uri="log://smx.cluster.publisher?level=INFO"/>
> >>                <to uri="nmr://smx.cluster"/>
> >>            </multicast>
> >>        </route>
> >>    </camelContext>
> >>
> >>    <bean id="nmr"
> >> class="org.apache.servicemix.camel.nmr.ServiceMixComponent">
> >>        <property name="nmr">
> >>            <osgi:reference
> >> interface="org.apache.servicemix.nmr.api.NMR"/>
> >>        </property>
> >>    </bean>
> >>
> >> </beans>
> >>
> >> route for cluster node 2:
> >>
> >> <?xml version="1.0" encoding="UTF-8"?>
> >>
> >> <beans xmlns="http://www.springframework.org/schema/beans"
> >>       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> >>       xmlns:osgi="http://www.springframework.org/schema/osgi"
> >>       xsi:schemaLocation="http://www.springframework.org/schema/beans
> >> http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
> >>                           http://camel.apache.org/schema/spring
> >> http://camel.apache.org/schema/spring/camel-spring.xsd
> >>                           http://www.springframework.org/schema/osgi
> >> http://www.springframework.org/schema/osgi/spring-osgi.xsd">
> >>
> >>    <camelContext id="smx.cluster.subscriber" xmlns="
> >> http://camel.apache.org/schema/spring">
> >>        <route id="receiveRoute">
> >>            <from uri="nmr://smx.cluster" />
> >>            <to uri="log://smx.cluster.subscriber?level=INFO"/>
> >>        </route>
> >>    </camelContext>
> >>
> >>    <bean id="nmr"
> >> class="org.apache.servicemix.camel.nmr.ServiceMixComponent">
> >>        <property name="nmr">
> >>            <osgi:reference
> >> interface="org.apache.servicemix.nmr.api.NMR"/>
> >>        </property>
> >>    </bean>
> >>
> >>    <bean class="org.apache.servicemix.common.osgi.EndpointExporter" 
/>
> >>
> >> </beans>
> >>
> >> It is important to note that routes are not deployed are service 
units
> > for
> >> servicemix-camel jbi component.
> >>
> >> Regards, Sergey
> >>
> >>
> >>
> >>
> >> Sergey_Zhemzhitsky@troika.ru
> >> 24.11.2010 18:55
> >> Please respond to
> >> users@camel.apache.org
> >>
> >>
> >> To
> >> users@camel.apache.org
> >> cc
> >>
> >> Subject
> >> Re: Is it possible to cluster camel endpoint?
> >>
> >>
> >>
> >>
> >>
> >>
> >> Hi
> >>
> >> I have attached sample application (SMX-CLUSTER.zip) and 
configuration
> > of
> >> activemq in ServiceMix (SMX-CONFIG.zip) for clustering:
> >>
> >> To install the application please execute mvn install from command
> line.
> >> It is necessary to have two instances of ServiceMix for the cluster
> >> (configurations for activemq are in SMX-CONFIG.zip).
> >>
> >> Start both ServiceMix nodes and execute the following command in the
> >> console of the first one:
> >>
> >> features:addUrl
> >> mvn:org.sample.smx.cluster/smx.cluster.features/1.0.0-SNAPSHOT/xml
> >> features:refreshUrl
> >> features:install org.sample.smx.subscriber
> >>
> >> Execute the following commands in the console of the second node:
> >>
> >> features:addUrl
> >> mvn:org.sample.smx.cluster/smx.cluster.features/1.0.0-SNAPSHOT/xml
> >> features:refreshUrl
> >> features:install org.sample.smx.publisher
> >>
> >> I have expected that messages which were sent from the first node 
would
> >> reach the second node.
> >>
> >> I'm using:
> >>
> >> Fuse ESB: 4.3.0-fuse-01-00
> >> JDK: 1.6.0_21-b07 (Sun)
> >> OS: Win XP Pro SP3
> >>
> >>
> >> Regards,
> >> Sergey
> >>
> >>
> >>
> >>
> >> Claus Ibsen <claus.ibsen@gmail.com>
> >> 24.11.2010 14:52
> >> Please respond to
> >> users@camel.apache.org
> >>
> >>
> >> To
> >> users@camel.apache.org
> >> cc
> >>
> >> Subject
> >> Re: Is it possible to cluster camel endpoint?
> >>
> >>
> >>
> >>
> >>
> >>
> >> Hi
> >>
> >> Can you post more details
> >>
> >> FUSE ESB version used
> >> JDK used
> >> OS used
> >> And the Camel route you are using.
> >>
> >> And you can try using the latest release: v4.3.0-fuse-02-00
> >>
> >>
> >> On Wed, Nov 24, 2010 at 10:06 AM,  <Sergey_Zhemzhitsky@troika.ru>
> wrote:
> >>> Hello all.
> >>>
> >>> I'm trying to use camel on the ServiceMix 4 cluster.
> >>>
> >>> According to 
http://camel.apache.org/clustering-and-loadbalancing.html
> >> we
> >>> can use NMR endpoint but there isn't an example there.
> >>> I have tried to connect from one node of a cluster to another using
> >>> camel's nmr component, but without success. An exception has 
occured.
> >>>
> >>> org.apache.servicemix.nmr.api.ServiceMixException: Could not 
dispatch
> >>> exchange. No matching endpoints.
> >>>        at
> >>>
> >>
> >
>
> 
org.apache.servicemix.nmr.core.FlowRegistryImpl.dispatch(FlowRegistryImpl.java:110)[58:org.apache.servicemix.nmr.core:1.3.0.fuse-00-00]
> >>>        at
> >>>
> >>
> >
>
> 
org.apache.servicemix.nmr.core.ChannelImpl.dispatch(ChannelImpl.java:286)[58:org.apache.servicemix.nmr.core:1.3.0.fuse-00-00]
> >>>        at
> >>>
> >>
> >
>
> 
org.apache.servicemix.nmr.core.ChannelImpl.send(ChannelImpl.java:117)[58:org.apache.servicemix.nmr.core:1.3.0.fuse-00-00]
> >>>        at
> >>>
> >>
> >
>
> 
org.apache.servicemix.camel.nmr.ServiceMixProducer.process(ServiceMixProducer.java:86)[191:org.apache.servicemix.camel.component:4.3.0.fuse-01-00]
> >>>        at
> >>>
> >>
> >
>
> 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:91)[92:org.apache.camel.camel-core:2.4.0.fuse-00-00]
> >>>        at
> >>>
> >>
> >
>
> 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:62)[92:org.apache.camel.camel-core:2.4.0.fuse-00-00]
> >>>        at
> >>>
> >>
> >
>
> 
org.apache.camel.processor.SendProcessor$2.doInAsyncProducer(SendProcessor.java:104)[92:org.apache.camel.camel-core:2.4.0.fuse-00-00]
> >>>        at
> >>>
> >>
> >
>
> 
org.apache.camel.impl.ProducerCache.doInAsyncProducer(ProducerCache.java:272)[92:org.apache.camel.camel-core:2.4.0.fuse-00-00]
> >>>        at
> >>>
> >>
> >
>
> 
org.apache.camel.processor.SendProcessor.process(SendProcessor.java:98)[92:org.apache.camel.camel-core:2.4.0.fuse-00-00]
> >>>        at
> >>>
> >>
> >
>
> 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:91)[92:org.apache.camel.camel-core:2.4.0.fuse-00-00]
> >>>        at
> >>>
> >>
> >
>
> 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:62)[92:org.apache.camel.camel-core:2.4.0.fuse-00-00]
> >>>        at
> >>>
> >>
> >
>
> 
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98)[92:org.apache.camel.camel-core:2.4.0.fuse-00-00]
> >>>        at
> >>>
> >>
> >
>
> 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89)[92:org.apache.camel.camel-core:2.4.0.fuse-00-00]
> >>>
> >>> Is it possible to use clustered endpoints in camel?
> >>>
> >>>
> >>> Best Regards,
> >>> Sergey
> >>
> >>
> >>
> >> --
> >> Claus Ibsen
> >> -----------------
> >> FuseSource
> >> Email: cibsen@fusesource.com
> >> Web: http://fusesource.com
> >> Twitter: davsclaus
> >> Blog: http://davsclaus.blogspot.com/
> >> Author of Camel in Action: http://www.manning.com/ibsen/
> >>
> >>
> >>
> >
> >
> >
> > --
> > Claus Ibsen
> > -----------------
> > FuseSource
> > Email: cibsen@fusesource.com
> > Web: http://fusesource.com
> > Twitter: davsclaus
> > Blog: http://davsclaus.blogspot.com/
> > Author of Camel in Action: http://www.manning.com/ibsen/
> >
> >
>
>
>
> --
> Claus Ibsen
> -----------------
> FuseSource
> Email: cibsen@fusesource.com
> Web: http://fusesource.com
> Twitter: davsclaus
> Blog: http://davsclaus.blogspot.com/
> Author of Camel in Action: http://www.manning.com/ibsen/
>
>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message