2017-11-17 2 views
1

Ich versuche, die Anzahl der Zeilen von einer SQL-Komponente mit der Eigenschaft header.CamelSqlRowCount ausgewählt. Der Wert wird jedoch leer. Ich fügte Spur hinzu, wie in einem anderen Beitrag erwähnt, um die Kopfzeilenwerte zu überprüfen, und nur breadcrumbId wird gedruckt. Kann mir jemand sagen, ob ich irgendetwas falsch mache?Apache Camel Wie kann ich auf die Header-Werte von einer SQL-Komponente zugreifen

Kamel Strecke

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

Die Spur angemeldet ist unter

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

Camel-Version - 2.15.1

+0

hast du das geprüft https://StackOverflow.com/questions/18572129/apache-camel-how-to-get-header-attributes-from-sql-component Vielleicht bekommst du einen Hinweis – pvpkiran

+0

Versuche es mit einer neueren Version –

+0

Ja, ich habe diesen Link überprüft. Das Problem dort war wegen Multicast. Ich hatte früher eine Split-Komponente in meiner Route. Nachdem ich das überprüft hatte, entfernte ich die geteilte Komponente und erstellte eine einfache Route wie oben gezeigt, um zu verifizieren, dass das Problem nicht auf die geteilte Komponente zurückzuführen ist. – Sarun

Antwort

3

Dieser Header für den Verbraucher nicht gesetzt ist, nur auf den Hersteller. Sie haben die Größe in der Listengröße der Nachrichtentexte. Sie können ein JIRA-Ticket bei Apache Camel protokollieren, um zu fragen, ob diese Kopfzeile auch vom Benutzer aufgenommen werden soll.

+0

funktioniert Danke für die Details. Die Eigenschaft $ {header.CamelSqlRowCount} wurde durch $ {body.size()} ersetzt, um die Anzahl zu ermitteln. – Sarun

Verwandte Themen