96.5. 在制作者中使用表达式参数


从 Camel 2.16.1 开始,您还可以使用 Simple 表达式,它允许对消息正文使用 OGNL,如表示法,其中假设具有 getLicensegetMinimum 方法:

@NAME(projects)
  SELECT *
  FROM projects
  WHERE license = :${body.license} AND id > :${body.minimum}
  ORDER BY id
Copy to Clipboard Toggle word wrap

96.5.1. 在消费者中使用表达式参数

从 Camel 2.23 开始提供

当使用 ElSql 组件作为消费者时,您现在可以使用表达式参数(简单语言)来构建动态查询参数,如调用 bean 的方法来检索 id、日期或内容。

例如,在以下示例中,我们在 bean myIdGenerator 上调用 nextId 方法:

@NAME(projectsByIdBean)
  SELECT *
  FROM projects
  WHERE id = :${bean#myIdGenerator.nextId}
Copy to Clipboard Toggle word wrap
重要

请注意,在上面的 bean 语法中,我们必须在简单表达式中使用 # 而不是 :。这是因为 Spring 查询参数解析程序是 in-use,它将在冒号上分隔参数。另外请注意,Spring query parser 会为每个查询调用 bean 两次。

bean 有以下方法:

public static class MyIdGenerator {

    private int id = 1;

    public int nextId() {
        // spring will call this twice, one for initializing query and 2nd for actual value
        id++;
        return id / 2;
    }
Copy to Clipboard Toggle word wrap

请注意,没有消息正文和标头的现有 Exchange,因此您可以在消费者中使用的简单表达式最可用于调用 bean 方法,如本例中所示。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat