46.5. 消息正文的处理
SQL 组件试图将消息正文转换为 java.util.Iterator
类型的对象,然后使用这个迭代器填充查询参数(其中每个查询参数由端点 URI 中的 # 符号(或配置的占位符)表示。如果消息正文不是数组或集合,转换会导致迭代一个对象(正文本身)的迭代程序。
例如,如果消息正文是 java.util.List
实例,则列表中的第一项将被替换为 SQL 查询中的第一个出现 #,即列表中的第二项替换为出现 # 的第二个位置,以此类推。
如果 批处理
被设置为 true
,则入站邮件正文的解释稍有变化 - 而不是参数迭代器,组件需要一个包含参数迭代器的迭代器;它的大小越大,它的大小决定批量大小。
您可以使用选项 useMessageBodyForSql
,允许使用消息正文作为 SQL 语句,然后在含有关键 SqlConstants.SQL_PARAMETERS
的标头中提供 SQL 参数。这使得 SQL 组件可以在 SQL 查询来自消息正文时更加动态工作。使用模板(如 Velocity、Freemarker)进行条件处理,例如 ,
根据查询参数存在而包含或排除子句。