【问题标题】:How can I improve the performance of the JbossFuse (v6.3) DSL route code?如何提高 JbossFuse (v6.3) DSL 路由代码的性能?
【发布时间】:2017-11-17 18:25:18
【问题描述】:

申请信息:

以下代码:从 IBM MQ 队列中读取,然后将消息发布到 REST 服务

(注意:从 MQ 队列读取速度很快,不是问题 - 而是 post 操作性能我无法改进)...

问题:

每秒无法输出/发布超过 44-47 条消息...

问题:

如何提高下面的 JbossFuse (v6.3) DSL 路由代码的性能?... (有哪些技术可以使其更快?)

package aaa.bbb.ccc;

import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.cdi.ContextName;

@ContextName("rest-dsl")
public class Netty4HttpSlowRoutes extends RouteBuilder {

    public Netty4HttpSlowRoutes() {
    }

    private final org.apache.camel.Processor proc1 = new Processor1();    

    @Override
    public void configure() throws Exception {

    org.apache.log4j.MDC.put("app.name", "netty4HttpSlow");

    System.getProperties().list(System.out);
    errorHandler(defaultErrorHandler().maximumRedeliveries(3).log("***FAILED_MESSAGE***"));   

    from("wmq:queue:mylocalqueue")
        .log("inMessage=" + (null==body()?"":body().toString()))
        .to("seda:node1?concurrentConsumers=20");

    from("seda:node1")
        .streamCaching()
        .threads(20)
        .setHeader(Exchange.HTTP_METHOD, constant(org.apache.camel.component.http4.HttpMethods.POST))
        .setHeader(Exchange.CONTENT_TYPE, constant("application/json"))
        .toD("netty4-http:http://localhost:7001/MyService/myServiceThing?textline\\=true");      
    }           
}

【问题讨论】:

  • 您的争论是从 MQ 读取消息还是将它们发布到 REST 服务?
  • 发布到其余服务。 mq 读取速度很快。
  • 我是 MQ 管理员,所以对于 REST 服务端没有任何建议。
  • 我明白了!谢谢,乔什麦克! :-)

标签: java-8 ibm-mq jbossfuse


【解决方案1】:

只是一些想法。首先要做的事情是:你测量过慢吗?您在 Camel 中花费了多少时间 VS 您在发送 HTTP 请求上花费了多少时间?
如果 REST 服务很慢,那么在 Camel 中您无能为力。根据服务的功能,您可以尝试减少线程数。

尝试禁用 streamCaching,因为它看起来好像你没有使用它。

然后使用to 而不是toD 来调用服务,我看到URL 总是一样的。在docs of ToD我读到了

默认情况下,简单语言用于计算端点。

每次调用路由时解析 URI 字符串可能会有一点开销。

【讨论】:

  • 嗨 Alessandro - 我是 JBoss Fuse 的新手,骆驼蓝图。 -我发布了实际代码的粗略模型,其中 system.properties 用于获取 URL 值 - 因此是“ToD”。原始代码还有一个“process()”方法,我认为“streamCaching”会有所帮助(?)。队列消耗得非常快。 “瓶颈”似乎集中在 REST 发布请求(?)上。想知道是否有办法“喷洒” REST 请求?问题:camel-netty4-http 是性能的正确选择吗? (再次,我使用骆驼蓝图)。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-20
相关资源
最近更新 更多