【问题标题】:Straight Through Processing in Apache CamelApache Camel 中的直通式处理
【发布时间】:2012-04-16 13:55:01
【问题描述】:

我有兴趣找出在 Apache Camel 中直接进行处理的最佳方法。

我有几个不同的组件可以在同一个 JVM 中启动,这与我的 activemq 代理所在的位置是分开的。尝试设置它以便我的消息按顺序从一个组件传递到下一个组件是否有意义?在下一条消息开始之前,我将如何设置骆驼以确保每条消息都命中路径上的每个组件?

更具体地说:我想通过我的 brokerURI 或其他东西的配置来做到这一点。我看到了这个页面:http://fusesource.com/wiki/display/ProdInfo/Understanding+the+Threads+Allocated+in+ActiveMQ,但我不确定在哪里/如何实现这些选项 - optimizedDispatch 似乎适用于代理destinationPolicy 选项。

谢谢

【问题讨论】:

    标签: java jms activemq apache-camel


    【解决方案1】:

    首先,在您的路由中显式配置一个从队列中消费的消费者...

    全局用于所有连接

    <bean id="jmsConfig" class="org.apache.camel.component.jms.JmsConfiguration">
        <property name="connectionFactory" ref="pooledConnectionFactory"/>
        <property name="concurrentConsumers" value="1"/>
        <property name="maxConcurrentConsumers" value="1"/>
    </bean>
    

    或根据路线/消费者明确

     from("activemq:queue:input?concurrentConsumers=1&maxConcurrentConcumers=1")...
    

    那么,您有几个选择。通常,您可以使用管道模式在单个路由中的步骤之间(同步)传递消息。或者使用camel-direct提供多条路由之间的同步消息流。

    from("activemq:queue:input?concurrentConsumers=1&maxConcurrentConcumers=1")
        .to(<step1>)
        .to(<step2>)
        ...
    

    或者如果您的步骤需要多条路线,则使用直接连接它们...

    from("activemq:queue:input?concurrentConsumers=1&maxConcurrentConsumers=1")
        .to("direct:step1");
    
    from("direct:step1")
        //perform step1 processing
        .to(direct:step2");
    
    from("direct:step2")
        //perform step2 processing
        .to(direct:step3");
    ...
    

    【讨论】:

    • 所以它必须添加到消费者每次读取的队列中?没有办法为代理控件中的所有队列配置这个?
    • 这也可以在全球范围内完成......我相应地更新了答案
    • 如何在代理上设置这些 async 和 dispatchAsync 选项?这对于直接处理是必需的吗?我可以将它与 TCP 传输一起使用吗?
    • 如果您的目标是减少线程并同步所有内容...那么您可以设置 optimizeDispatch=true 和 dispatchAsync=false 等。但是,这些通常不需要调整,除非您有特定的需要解决的线程问题/要求。如果你按照我上面的例子,你将保证处理顺序,因为只允许一个消费者。此外,如果您需要更好的吞吐量但仍需要对相关消息进行排序,请考虑使用消息组 (activemq.apache.org/message-groups.html),它们提供了两全其美的效果
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    • 2011-11-22
    • 1970-01-01
    相关资源
    最近更新 更多