Apache Camel Как получить доступ к значениям заголовка из компонента sql

Я пытаюсь напечатать количество строк, выбранных компонентом sql, используя свойство header.CamelSqlRowCount. Однако значение приходит пустым. Я добавил трассировку, как упоминалось в другом сообщении, чтобы проверить значения заголовка, и печатается только хлебная крошка. Может ли кто-нибудь сказать мне, если я делаю что-то не так?

Верблюжий маршрут

        <endpoint id="sqlComponent" uri="sql:${sql.pollerQuery}?dataSource=DataSource&amp;consumer.delay=60000&amp;consumer.useIterator=false"/>
    <route id="root">
        <from ref="sqlComponent"/>
        <log message="Received ${header.CamelSqlRowCount} records from the poller query"/>
        <log message="Message Body= ${body}"/>
    </route>

Записанная трассировка ниже

DEBUG 2017-11-16 18:01:00 [Camel (camel-1) thread #0 - sql://SELECT%20ID%20FROM%20TABLE%20WHERE%20PUBLISHED%20=%20'N'] Executing query: SELECT ID FROM TABLE WHERE PUBLISHED = 'N'
INFO  2017-11-16 18:01:01 [Camel (camel-1) thread #0 - sql://SELECT%20ID%20FROM%20TABLE%20WHERE%20PUBLISHED%20=%20'N'] ID-MyMachine >>> (root) from(sql://SELECT%20ID%20FROM%20TABLE%20WHERE%20PUBLISHED%20=%20'N'?consumer.delay=60000&consumer.useIterator=false&dataSource=odsDataSource) --> log[Received ${header.CamelSqlRowCount} records from the poller query] <<< Pattern:InOnly, Headers:{breadcrumbId=ID-MyMachine}, BodyType:java.util.ArrayList, Body:[{ID=1}, {ID=2}, {ID=3}, {ID=4}, {ID=5}]
INFO  2017-11-16 18:01:01 [Camel (camel-1) thread #0 - sql://SELECT%20ID%20FROM%20TABLE%20WHERE%20PUBLISHED%20=%20'N'] Received  records from the poller query
INFO  2017-11-16 18:01:01 [Camel (camel-1) thread #0 - sql://SELECT%20ID%20FROM%20TABLE%20WHERE%20PUBLISHED%20=%20'N'] ID-BLRKEC381989D-52624-1510835442422-0-2 >>> (root) log[Received ${header.CamelSqlRowCount} records from the poller query] --> log[Message Body= ${body}] <<< Pattern:InOnly, Headers:{breadcrumbId=ID-MyMachine}, BodyType:java.util.ArrayList, Body:[{ID=1}, {ID=2}, {ID=3}, {ID=4}, {ID=5}]
INFO  2017-11-16 18:01:01 [Camel (camel-1) thread #0 - sql://SELECT%20ID%20FROM%20TABLE%20WHERE%20PUBLISHED%20=%20'N'] Message Body= [{ID=1}, {ID=2}, {ID=3}, {ID=4}, {ID=5}]

Верблюжья версия - 2.15.1


person Sarun    schedule 17.11.2017    source источник
comment
Вы проверили этот stackoverflow.com/questions/18572129/ Может быть, вы получите подсказку   -  person pvpkiran    schedule 17.11.2017
comment
Попробуйте более новую версию   -  person Claus Ibsen    schedule 17.11.2017
comment
да, я проверил эту ссылку. Проблема была из-за многоадресной рассылки. У меня был разделенный компонент ранее на моем маршруте. Проверив это, я удалил разделенный компонент и создал простой маршрут, как показано выше, чтобы убедиться, что проблема не связана с разделенным компонентом.   -  person Sarun    schedule 17.11.2017
comment
не работал с версией верблюда 2.20.0 также   -  person Sarun    schedule 17.11.2017


Ответы (1)


Этот заголовок не установлен для потребителя, только для производителя. У вас есть размер в размере списка тела сообщения. Вы можете зарегистрировать билет JIRA в Apache Camel, чтобы попросить, чтобы этот заголовок также был включен потребителем.

person Claus Ibsen    schedule 17.11.2017
comment
Спасибо за подробности. Заменено свойство ${header.CamelSqlRowCount} на ${body.size()}, чтобы получить количество. - person Sarun; 20.11.2017