sql 组件在 Camel 中作为生产者的行为是什么?
What is behaviour of sql component serve as producer in Camel?
我正在阅读 camel-example-sql,它有两条定义如下的路由:
<!-- route that generate new orders and insert them in the database -->
<route id="generateOrder-route">
<from uri="timer:foo?period=5s"/>
<transform>
<method ref="orderBean" method="generateOrder"/>
</transform>
<to uri="sql:{{sql.insertOrder}}"/>
<log message="Inserted new order ${body[id]}"/>
</route>
<!-- route that process the orders by picking up new rows from the database
and when done processing then update the row to mark it as processed -->
<route id="processOrder-route">
<from uri="sql:{{sql.selectOrder}}?consumer.onConsume={{sql.markOrder}}"/>
<to uri="bean:orderBean?method=processOrder"/>
<log message="${body}"/>
</route>
我能理解第一个路由,它每 5 秒触发一次。但是第二条路由什么时候触发呢?
第二条路由使用{{sql.selectOrder}}
中的SQLselect语句查询数据库,如果有结果集,则每一行都成为路由的消息。如果结果集为空,则不会路由任何消息。
第二条路线使用每 500 毫秒运行一次的调度程序(例如 consumer.delay)选项。
我正在阅读 camel-example-sql,它有两条定义如下的路由:
<!-- route that generate new orders and insert them in the database -->
<route id="generateOrder-route">
<from uri="timer:foo?period=5s"/>
<transform>
<method ref="orderBean" method="generateOrder"/>
</transform>
<to uri="sql:{{sql.insertOrder}}"/>
<log message="Inserted new order ${body[id]}"/>
</route>
<!-- route that process the orders by picking up new rows from the database
and when done processing then update the row to mark it as processed -->
<route id="processOrder-route">
<from uri="sql:{{sql.selectOrder}}?consumer.onConsume={{sql.markOrder}}"/>
<to uri="bean:orderBean?method=processOrder"/>
<log message="${body}"/>
</route>
我能理解第一个路由,它每 5 秒触发一次。但是第二条路由什么时候触发呢?
第二条路由使用{{sql.selectOrder}}
中的SQLselect语句查询数据库,如果有结果集,则每一行都成为路由的消息。如果结果集为空,则不会路由任何消息。
第二条路线使用每 500 毫秒运行一次的调度程序(例如 consumer.delay)选项。