95.5. プロデューサでの式パラメーターの使用
Camel 2.16.1 以降では、Simple 式も使用できます。これにより、メッセージボディーで OGNL のような表記を使用できます。ここでは、getLicense
および getMinimum
メソッドがあることを前提としています。
@NAME(projects) SELECT * FROM projects WHERE license = :${body.license} AND id > :${body.minimum} ORDER BY id
95.5.1. コンシューマーでの式パラメーターの使用
Camel 2.23 以降で利用可能
ElSql コンポーネントをコンシューマーとして使用する場合、式パラメーター (Simple 言語) を使用して、Bean でメソッドを呼び出して ID や日付などを取得するなど、動的クエリーパラメーターを作成することもできるようになりました。
たとえば、以下のサンプルでは、Bean myIdGenerator で nextId メソッドを呼び出します。
@NAME(projectsByIdBean) SELECT * FROM projects WHERE id = :${bean#myIdGenerator.nextId}
上記の Bean 構文では、単純な式で :
の代わりに #
を使用する必要があることに注意してください。これは、コロンでパラメーターを区切る Spring クエリーパラメーターパーサーが使用されているためです。また、Spring クエリーパーサーはクエリーごとに Bean を 2 回呼び出すことに注意してください。
また、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; }
メッセージボディーとヘッダーを持つ既存の Exchange
がないことに注意してください。したがって、コンシューマーで使用できる単純な式は、この例のように Bean メソッドを呼び出すのに最も役立ちます。