Apache верблюжий маршрут, activemq и mybatis - передаваемый аргумент - PullRequest
0 голосов
/ 12 сентября 2018

предположим, что у меня есть такой маршрут.

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

Как я могу получить сообщение от activemq и передать его в mybatis select? (Это просто строка)

@Edit.

Я хочу получить такую ​​строку: category1, category2

и мой выбор выглядит так:

<select id="select-authors" resultMap="authors-result">
                SELECT
                 name, age, category
                FROM author
                WHERE category IN
                <foreach item="item" index="index" collection="categories"
                 open="(" separator="," close=")">
                    #{item}
                 </foreach>
     </select>

Карта результатов просто отображает эти 3 поля.

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Так что, если у вас есть строка типа "category1, category2" от потребителя activemq, вам нужно собрать из нее для обработки mybatis foreach.Я делаю пример, используя Java DSL, потому что это будет быстрее.

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");

И изменить сопоставление, как:

<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>

Это должно работать.Больше полезных примеров вы можете найти здесь

0 голосов
/ 12 сентября 2018

Вы можете использовать простой язык Camel (http://camel.apache.org/simple.html)) для доступа к содержимому (тексту или свойствам) сообщения JMS:

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