English 中文(简体)
ache Camel: GBs of data from database Lined to JMS endpoint
原标题:Apache Camel : GBs of data from database routed to JMS endpoint

我在 came现在做了几个小项目,但我竭力理解的一件事是如何处理在 came路费时的大型数据(这不适于记忆)。

我拥有一个数据库,其中含有一些价值数据、而且我愿意使用 came子。 完全读到所有数据,并不是一种选择。

如果我是作为独立的附录来这样做的话,那么我就会有通过数据页的代码,并向我的联几支助处寄出空白。 我愿使用 came,因为它提供了冰层。 如果我从档案中花钱的话,我可以使用下游电话。

另外,如果我使用 came-sql/camel-jdbc/camel-jpa,或使用一个灯塔从我的数据库读到。

我仍然希望大家。 我更熟悉贾瓦·瓦卢,但希望人们能够提供任何帮助/帮助。

<>Update: 2-MAY-2012

因此,我有一段时间可以在此问题上发挥作用,我认为我实际上做的是滥用生产者的概念,以便我能够在一条路上加以利用。

public class MyCustomRouteBuilder extends RouteBuilder {

    public void configure(){
         from("timer:foo?period=60s").to("mycustomcomponent:TEST");

         from("direct:msg").process(new Processor() {
               public void process(Exchange ex) throws Exception{
                   System.out.println("Receiving value" : + ex.getIn().getBody() );
               }
         }
    }

}

我的生产者们看着以下东西。 为了明确起见,我没有把习俗或习俗委员会包括在内,因为它似乎只是一小.。

public class MyCustomProducer extends DefaultProducer{ 

    Endpoint e;
    CamelContext c;

    public MyCustomProducer(Endpoint epoint){
          super(endpoint)   
          this.e = epoint;
          this.c = e.getCamelContext();
    }

    public void process(Exchange ex) throws Exceptions{

        Endpoint directEndpoint = c.getEndpoint("direct:msg");
        ProducerTemplate t = new DefaultProducerTemplate(c);

        // Simulate streaming operation / chunking of BIG data.
        for (int i=0; i <20 ; i++){
           t.start();
           String s ="Value " + i ;                  
           t.sendBody(directEndpoint, value)
           t.stop();         
        }
    }
} 

首先,上述数字似乎非常干净。 这样做的最清洁方式似乎是通过我的 came路线所消耗的预定的采石工作(取代直接的:mg),使我能够更灵活地处理在我的 came管道内收到的电量。 然而,我非常喜欢把确定时间启动作为路线的一部分的语义。

是否有任何人想到这样做的最佳方式。

问题回答

我的理解是,你需要做的是:

from("jpa:SomeEntity" + 
    "?consumer.query=select e from SomeEntity e where e.processed = false" +
    "&maximumResults=150" +
    "&consumeDelete=false")
.to("jms:queue:entities");

界定了多少实体接受询问。

当你完成实体案例的处理时,你需要设置<代码>e.processed = 真实;和,以便该实体再次获得t。

这方面的一个途径是@ sumed annotation:

class SomeEntity {
    @Consumed
    public void markAsProcessed() {
        setProcessed(true);
    }
}

另一件事情需要仔细研究,是你如何在将该实体送至该地之前将其归类。 您可能需要从来至上使用enricher





相关问题
Using SimplePie with CodeIgniter and XAMPP

I am using CodeIgniter 1.7.2 with XAMPP 1.7.2 on a Windows computer. I am trying to make use of SimplePie. I followed all the instructions I could find: a copy of simplepie.inc is in my applications/...

Multiple Sites with common files

I have developed over 50 sites that all use the exact same files other than CSS and IMAGES, I currently duplicate the files each time I create a new site and upload different css and images. What ...

http server validation

I finish a litle http server, writing from scratch. I would like to be sure that my imlementation is conforme to the HTTP specifications. W3C give us tools for HTML/XML conformance, but i see nothing ...

热门标签