我有一个在spring-boot上运行camel的应用程序。我想从camel路由中传递一个参数retriesAllowed给namedQuery。
已命名查询:
@NamedQuery(name = "findFailedMessages", query = RawMessageTx.HQL_FIND_FAILED_MESSAGES)
public class RawMessageTx extends BaseEntityWithTransmitStatus implements Serializable {
public static final String HQL_FIND_FAILED_MESSAGES = "SELECT x from RawMessageTx x WHERE x.status = 'FAILED' and x.tryAgain = 1 and x.retriesAttempted <= :retriesAllowed ORDER BY x.created ";
给药途径:
from("seda:retry_poll_failed_messages").routeId("retry_poll_failed_messages")
.setHeader("retriesAllowed", constant(retriesAllowed))
.toF("jpa:%s?namedQuery=findFailedMessages&maximumResults=%d", RawMessageTx.class.getName(),
maxMessagesPerPollAttempt)
.split(body())
.to("direct:anotherEndpoint");
我尝试了不同的东西,它不工作,我不能找到一个很好的例子在网上。
1条答案
按热度按时间gkl3eglg1#
这在JPA组件的文档中进行了解释:
parameters:这个键/值Map用于构建查询参数。它应该是泛型类型java.util.Map,其中的键是给定JPA查询的命名参数
这意味着您必须执行以下操作:
其中,“myMap”是Camel注册表中可用的“java.util.Map”类型Bean的名称。
注册此类bean的一种可能方法(其中之一)是Camel
Processor
(当然是在jpa端点之前调用)