骆驼中途jpa消费者

时间:2013-06-07 11:52:18

标签: jpa apache-camel quartz-scheduler

我遇到了JPA的以下问题,但它可能更像是关于Camel的概念性问题。

我需要一个基于cron的Quartz消费者。但如果它被触发,我想选择作为JPA组件的第一步。

<from uri="quartz://myQuartz?cron=myCronExpression/>
<to uri="jpa://home.myEntity?consumer.query=select o from home.myEntity o"/>

但是,如果我用“to”调用JPA组件,那么它将被用作Producer,而不是Consumer。我可以以某种方式使用JPA组件来处理这个问题,或者我必须遵循Service Activator(基于bean)逻辑并将JPA组件留在后面吗?

提前致谢, 盖尔盖伊

2 个答案:

答案 0 :(得分:2)

这几乎是Content-Enrichement模式。

可以使用

<pollEnrich uri="jpa://home.myEntity?consumer.query=select o from home.myEntity o"/>

而是使用消费者中间路线。请记住,您不能使用路由(标头等)中的运行时数据,但在这种情况下需要保持路由URI静态。看起来你的URI是静态的,所以应该没问题。

答案 1 :(得分:0)

非常好点Petter。我有一个类似的问题。我想创建一个简单的路由,调用时将从数据库中检索数据。解决方案很简单。

from("direct:test")
.pollEnrich("jpa://" + User.class.getName() + "?consumer.query=select u from test.User u&consumeDelete=false")

同时检查此Camel - content enricher: enrich() vs pollEnrich()