如何在Apache Camel蓝图中使用异步路由

时间:2018-06-29 11:16:12

标签: java apache-camel osgi blueprint

我有一条必须异步使用的路由,并且我正在使用直接组件将其称为别名。

    <route id="producer_CUSTOMER_INTERACTIONS_ISSUES_RELATIONSHIPS_Topic">
        <from uri="direct:test"/>
        <pollEnrich aggregateOnException="false" id="pollEnrich1" timeout="-1">
            <constant>file:mock/customer-interactions-issues-relationships?noop=true&amp;idempotent=false</constant>
        </pollEnrich>
        <to uri="kafka:customer-interactions-issues-relationships?brokers=localhost:9092"/>
    </route>

该路线必须由以下人员消耗:

<route id="1"><from uri="timer://foo?fixedRate=true&amp;period=1&amp;repeatCount=1000"/><to uri="direct:test"/></route>
<route id="2"><from uri="timer://foo?fixedRate=true&amp;period=1&amp;repeatCount=1000"/><to uri="direct:test"/></route>
<route id="3"><from uri="timer://foo?fixedRate=true&amp;period=1&amp;repeatCount=1000"/><to uri="direct:test"/></route>
<route id="4"><from uri="timer://foo?fixedRate=true&amp;period=1&amp;repeatCount=1000"/><to uri="direct:test"/></route>

我希望每条消费者路线异步请求producer_CUSTOMER_INTERACTIONS_ISSUES_RLATIONSHIPS_Topic的模拟内容的1000倍,但是现在,它是同步的,如下所示:

enter image description here

我已经在Camel文档中阅读了有关SEDA组件的信息,但是没有关于如何在Blueprints中使用它的示例:(

1 个答案:

答案 0 :(得分:1)

为了帮助需要这样做的其他人,我使用以下方法解决了此问题:

<route id="1"><from uri="timer://foo?fixedRate=true&amp;period=1&amp;repeatCount=1000&amp;delay=-1"/><to uri="direct:test"/></route>

我刚刚添加了delay=-1来强制其异步运行。

我真的不知道这是否是野兽的方法。如果其他人有更好的答案,请将其发布以帮助=)