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 <rjiliyous...@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
>

Reply via email to