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>