Apache camel Apache驼峰路由、activemq和mybatis-传递参数

Apache camel Apache驼峰路由、activemq和mybatis-传递参数,apache-camel,activemq,mybatis,Apache Camel,Activemq,Mybatis,假设我有这样的路线 <route> <from uri="activemq:queue:someQueue"/> <to uri="mybatis:select-items?statementType=SelectOne"/> </route> 结果映射只映射这3个字段。您可以使用Camel simple language()访问JMS消息的内容(正文或属性): &l

假设我有这样的路线

        <route>
            <from uri="activemq:queue:someQueue"/>
            <to uri="mybatis:select-items?statementType=SelectOne"/>
        </route>

结果映射只映射这3个字段。

您可以使用Camel simple language()访问JMS消息的内容(正文或属性):

<route>
   <from uri="activemq:queue:someQueue"/>
   <to uri="mybatis:select-items?statementType=${body}"/>
</route>

因此,如果您从activemq consumer获得了类似“category1,category2”的字符串,则需要从中进行收集,以用于mybatis foreach处理。我用JavaDSL做例子,因为它会更快

from("activemq:queue:someQueue")
            .process(exchange -> {
                String jmsString = exchange.getIn().getBody(String.class);
                List<String> strings = Arrays.asList(jmsString.split(","));
                exchange.getIn().setBody(strings);
            })
            .to("mybatis:select-items?statementType=SelectOne");
from(“activemq:queue:someQueue”)
.流程(交换->{
字符串jmsString=exchange.getIn().getBody(String.class);
List strings=Arrays.asList(jmsString.split(“,”);
exchange.getIn().setBody(字符串);
})
.to(“mybatis:选择项目?语句类型=选择一项”);
并更改映射,如:

<select id="select-authors" parameterType="java.util.List" resultMap="authors-result">
            SELECT
             name, age, category
            FROM author
            WHERE category IN
            <foreach item="item" collection="list"
             open="(" separator="," close=")">
                #{item}
             </foreach>
 </select>

挑选
姓名、年龄、类别
来自作者
类别在哪里
#{item}

这应该行得通。您可以找到更多有用的示例

请用更多细节更新您的问题。向某个队列发送了什么消息?选择项查询的映射如何?为什么要将body对象设置为statementType参数?根据文档,它需要是StatementType枚举值。对不起,我显然误解了这个问题。它认为这是关于如何将JMS消息(正文)作为目标uri的参数/参数传递。。。
<select id="select-authors" parameterType="java.util.List" resultMap="authors-result">
            SELECT
             name, age, category
            FROM author
            WHERE category IN
            <foreach item="item" collection="list"
             open="(" separator="," close=")">
                #{item}
             </foreach>
 </select>