You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by RJILI Youssef <rj...@gmail.com> on 2013/12/16 10:48:39 UTC
Help apache camel jdbc + active
I'm new in apache camel and i have a problem about the filling of the
activemq.
I want to get the values from DB and filled it into activemq.
My activemq is started:
My code :
private void fillActiveMq() throws Exception{
JndiRegistry registry = new JndiRegistry(new JndiContext());
CamelContext camelCtxt = new DefaultCamelContext(registry);
MysqlDataSource datasource = getDataSource();
JdbcEndpoint endpoint = getJDBCEndPoint(datasource, camelCtxt);
registry.bind("bulksms", datasource);
camelCtxt.addComponent("activemq",ActiveMQComponent.activeMQComponent("vm://localhost?broker.persistent=false"));
camelCtxt.addEndpoint("jdbc:bulksms", endpoint);
ProducerTemplate pT= camelCtxt.createProducerTemplate();
pT.sendBody("jdbc:bulksms" , "select message from message");
camelCtxt.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
interceptSendToEndpoint("jdbc:*").throwException(new
ConnectException("Cannot connect"));
from("jdbc:bulksms").setBody(constant("select message from
message")).to("activemq:queue:messages");
}
});
camelCtxt.start();
Thread.sleep(1000);
camelCtxt.stop();
}
private MysqlDataSource getDataSource() {
MysqlDataSource datasource = new MysqlDataSource();
datasource.setUser("root");
datasource.setPassword("root");
datasource.setDatabaseName("bulksms");
datasource.setPortNumber(3306);
datasource.setServerName("127.0.0.1");
return datasource;
}
private JdbcEndpoint getJDBCEndPoint(MysqlDataSource datasource,
CamelContext camelCtxt) {
JdbcEndpoint endpoint = new JdbcEndpoint();
endpoint.setDataSource(datasource);
endpoint.setCamelContext(camelCtxt);
return endpoint;
}
I have this exception :
Exception in thread "main" java.lang.UnsupportedOperationException: Not
supported
at
org.apache.camel.component.jdbc.JdbcEndpoint.createConsumer(JdbcEndpoint.java:59)
at
org.apache.camel.impl.EventDrivenConsumerRoute.addServices(EventDrivenConsumerRoute.java:65)
at
org.apache.camel.impl.DefaultRoute.onStartingServices(DefaultRoute.java:80)
at org.apache.camel.impl.RouteService.warmUp(RouteService.java:134)
at
org.apache.camel.impl.DefaultCamelContext.doWarmUpRoutes(DefaultCamelContext.java:2109)
at
org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:2039)
at
org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(DefaultCamelContext.java:1827)
at
org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1699)
at
org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:1544)
at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
at
org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:1512)
at com.apachecamel.ManageQueueFromDB.fillActiveMq(ManageQueueFromDB.java:76)
at com.apachecamel.ManageQueueFromDB.main(ManageQueueFromDB.java:43)
I only used java DSL code, Any Help please
Re: Help apache camel jdbc + active
Posted by "kraythe ." <kr...@gmail.com>.
As said above. Use quartz or an AMQ event to trigger it.
*Robert Simmons Jr. MSc. - Lead Java Architect @ EA*
*Author of: Hardcore Java (2003) and Maintainable Java (2012)*
*LinkedIn: **http://www.linkedin.com/pub/robert-simmons/40/852/a39
<http://www.linkedin.com/pub/robert-simmons/40/852/a39>*
On Mon, Dec 16, 2013 at 4:54 AM, Richard Kettelerij <
richardkettelerij@gmail.com> wrote:
> As mentioned in the Camel docs for the JDBC component: This component can
> only be used to define producer endpoints, which means that you cannot use
> the JDBC component in a from() statement.
>
> So if you want to poll message from a database you shouldn't use the JDBC
> component but instead use either the SQL component (
> http://camel.apache.org/sql-component.html), JPA component (
> http://camel.apache.org/jpa) or MyBatis component (
> http://camel.apache.org/mybatis) instead. These do support the polling
> consumer EIP.
>
>
> On Mon, Dec 16, 2013 at 10:48 AM, RJILI Youssef <rjiliyoussef@gmail.com
> >wrote:
>
> > I'm new in apache camel and i have a problem about the filling of the
> > activemq.
> > I want to get the values from DB and filled it into activemq.
> > My activemq is started:
> >
> > My code :
> >
> >
> > private void fillActiveMq() throws Exception{
> > JndiRegistry registry = new JndiRegistry(new JndiContext());
> > CamelContext camelCtxt = new DefaultCamelContext(registry);
> > MysqlDataSource datasource = getDataSource();
> > JdbcEndpoint endpoint = getJDBCEndPoint(datasource, camelCtxt);
> >
> > registry.bind("bulksms", datasource);
> >
> >
> >
> camelCtxt.addComponent("activemq",ActiveMQComponent.activeMQComponent("vm://localhost?broker.persistent=false"));
> > camelCtxt.addEndpoint("jdbc:bulksms", endpoint);
> >
> > ProducerTemplate pT= camelCtxt.createProducerTemplate();
> > pT.sendBody("jdbc:bulksms" , "select message from message");
> >
> > camelCtxt.addRoutes(new RouteBuilder() {
> >
> > @Override
> > public void configure() throws Exception {
> > interceptSendToEndpoint("jdbc:*").throwException(new
> > ConnectException("Cannot connect"));
> > from("jdbc:bulksms").setBody(constant("select message from
> > message")).to("activemq:queue:messages");
> > }
> > });
> > camelCtxt.start();
> > Thread.sleep(1000);
> >
> > camelCtxt.stop();
> > }
> > private MysqlDataSource getDataSource() {
> > MysqlDataSource datasource = new MysqlDataSource();
> > datasource.setUser("root");
> > datasource.setPassword("root");
> > datasource.setDatabaseName("bulksms");
> > datasource.setPortNumber(3306);
> > datasource.setServerName("127.0.0.1");
> > return datasource;
> > }
> >
> > private JdbcEndpoint getJDBCEndPoint(MysqlDataSource datasource,
> > CamelContext camelCtxt) {
> >
> > JdbcEndpoint endpoint = new JdbcEndpoint();
> > endpoint.setDataSource(datasource);
> > endpoint.setCamelContext(camelCtxt);
> > return endpoint;
> > }
> >
> > I have this exception :
> > Exception in thread "main" java.lang.UnsupportedOperationException: Not
> > supported
> > at
> >
> >
> org.apache.camel.component.jdbc.JdbcEndpoint.createConsumer(JdbcEndpoint.java:59)
> > at
> >
> >
> org.apache.camel.impl.EventDrivenConsumerRoute.addServices(EventDrivenConsumerRoute.java:65)
> > at
> >
> org.apache.camel.impl.DefaultRoute.onStartingServices(DefaultRoute.java:80)
> > at org.apache.camel.impl.RouteService.warmUp(RouteService.java:134)
> > at
> >
> >
> org.apache.camel.impl.DefaultCamelContext.doWarmUpRoutes(DefaultCamelContext.java:2109)
> > at
> >
> >
> org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:2039)
> > at
> >
> >
> org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(DefaultCamelContext.java:1827)
> > at
> >
> >
> org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1699)
> > at
> >
> >
> org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:1544)
> > at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
> > at
> >
> >
> org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:1512)
> > at
> > com.apachecamel.ManageQueueFromDB.fillActiveMq(ManageQueueFromDB.java:76)
> > at com.apachecamel.ManageQueueFromDB.main(ManageQueueFromDB.java:43)
> >
> > I only used java DSL code, Any Help please
> >
>
Re: Help apache camel jdbc + active
Posted by Richard Kettelerij <ri...@gmail.com>.
As mentioned in the Camel docs for the JDBC component: This component can
only be used to define producer endpoints, which means that you cannot use
the JDBC component in a from() statement.
So if you want to poll message from a database you shouldn't use the JDBC
component but instead use either the SQL component (
http://camel.apache.org/sql-component.html), JPA component (
http://camel.apache.org/jpa) or MyBatis component (
http://camel.apache.org/mybatis) instead. These do support the polling
consumer EIP.
On Mon, Dec 16, 2013 at 10:48 AM, RJILI Youssef <rj...@gmail.com>wrote:
> I'm new in apache camel and i have a problem about the filling of the
> activemq.
> I want to get the values from DB and filled it into activemq.
> My activemq is started:
>
> My code :
>
>
> private void fillActiveMq() throws Exception{
> JndiRegistry registry = new JndiRegistry(new JndiContext());
> CamelContext camelCtxt = new DefaultCamelContext(registry);
> MysqlDataSource datasource = getDataSource();
> JdbcEndpoint endpoint = getJDBCEndPoint(datasource, camelCtxt);
>
> registry.bind("bulksms", datasource);
>
>
> camelCtxt.addComponent("activemq",ActiveMQComponent.activeMQComponent("vm://localhost?broker.persistent=false"));
> camelCtxt.addEndpoint("jdbc:bulksms", endpoint);
>
> ProducerTemplate pT= camelCtxt.createProducerTemplate();
> pT.sendBody("jdbc:bulksms" , "select message from message");
>
> camelCtxt.addRoutes(new RouteBuilder() {
>
> @Override
> public void configure() throws Exception {
> interceptSendToEndpoint("jdbc:*").throwException(new
> ConnectException("Cannot connect"));
> from("jdbc:bulksms").setBody(constant("select message from
> message")).to("activemq:queue:messages");
> }
> });
> camelCtxt.start();
> Thread.sleep(1000);
>
> camelCtxt.stop();
> }
> private MysqlDataSource getDataSource() {
> MysqlDataSource datasource = new MysqlDataSource();
> datasource.setUser("root");
> datasource.setPassword("root");
> datasource.setDatabaseName("bulksms");
> datasource.setPortNumber(3306);
> datasource.setServerName("127.0.0.1");
> return datasource;
> }
>
> private JdbcEndpoint getJDBCEndPoint(MysqlDataSource datasource,
> CamelContext camelCtxt) {
>
> JdbcEndpoint endpoint = new JdbcEndpoint();
> endpoint.setDataSource(datasource);
> endpoint.setCamelContext(camelCtxt);
> return endpoint;
> }
>
> I have this exception :
> Exception in thread "main" java.lang.UnsupportedOperationException: Not
> supported
> at
>
> org.apache.camel.component.jdbc.JdbcEndpoint.createConsumer(JdbcEndpoint.java:59)
> at
>
> org.apache.camel.impl.EventDrivenConsumerRoute.addServices(EventDrivenConsumerRoute.java:65)
> at
> org.apache.camel.impl.DefaultRoute.onStartingServices(DefaultRoute.java:80)
> at org.apache.camel.impl.RouteService.warmUp(RouteService.java:134)
> at
>
> org.apache.camel.impl.DefaultCamelContext.doWarmUpRoutes(DefaultCamelContext.java:2109)
> at
>
> org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:2039)
> at
>
> org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(DefaultCamelContext.java:1827)
> at
>
> org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1699)
> at
>
> org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:1544)
> at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
> at
>
> org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:1512)
> at
> com.apachecamel.ManageQueueFromDB.fillActiveMq(ManageQueueFromDB.java:76)
> at com.apachecamel.ManageQueueFromDB.main(ManageQueueFromDB.java:43)
>
> I only used java DSL code, Any Help please
>