2

Apache Camel(バージョン2.19.1)にkafkaコンポーネントを使用してエラーが発生しました。Camel-Kafkaコンポーネントが動作しないというエラー:「ブローカーが設定されているため」

... 
context.addRoutes(new RouteBuilder() { 
      public void configure() { 
       from("kafka://localhost:9092?topic=test&groupId=testing") 
       .to("stream:out"); 
    context.start(); 
    } 
} 

エンドポイントに「//」を付けて試してみました。

何私が得たことは次のとおりです。

Exception in thread "main" org.apache.camel.FailedToCreateRouteException: Failed to create route route1: Route(route1)[[From[kafka://localhost:9092?topic=test&groupI... because of Brokers must be configured 
at org.apache.camel.impl.RouteService.warmUp(RouteService.java:147) 
at org.apache.camel.impl.DefaultCamelContext.doWarmUpRoutes(DefaultCamelContext.java:3762) 
at org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:3669) 
at org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(DefaultCamelContext.java:3455) 
at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:3309) 
at org.apache.camel.impl.DefaultCamelContext.access$000(DefaultCamelContext.java:202) 
at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:3093) 
at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:3089) 
at org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:3112) 
at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:3089) 
at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) 
at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:3026) 
at org.apache.camel.MainApp.main(MainApp.java:60) 
Caused by: java.lang.IllegalArgumentException: Brokers must be configured 
at org.apache.camel.component.kafka.KafkaConsumer.<init>(KafkaConsumer.java:62) 
at org.apache.camel.component.kafka.KafkaEndpoint.createConsumer(KafkaEndpoint.java:76) 
at org.apache.camel.impl.EventDrivenConsumerRoute.addServices(EventDrivenConsumerRoute.java:69) 
at org.apache.camel.impl.DefaultRoute.onStartingServices(DefaultRoute.java:103) 
at org.apache.camel.impl.RouteService.doWarmUp(RouteService.java:172) 
at org.apache.camel.impl.RouteService.warmUp(RouteService.java:145) 
... 12 more 

Process finished with exit code 1 

(私はそれを理解しようとしているが、私は本当に問題なのかを理解していない、私のカフカのクラスタは、単一のブローカーであり、すべてが稼働しています飼い葉桶とサーバー)、助けを求めて

答えて

1

消費者uriにbrokers=localhost:9092を追加します。

+0

私は何のエラーも出ませんが、コンシューマーは起きていません。コード0で終了しますが、代わりに明示的なcontext.stop()まで待つ必要があります。 – Giuseppe

+1

いいえ、デフォルトで(あなたがスタンドアロンのCamelアプリを持っている場合)、そうしてはいけません。 CamelContextを実行し続けるソリューションがあります:http://camel.apache.org/running-camel-standalone-and-have-it-keep-running.html – mgyongyosi

+0

@mgyongyosiが参照するCamelメインクラスを使用してください – Gautam

0

this exampleを見ると、URLの最初の部分はtopicで、パラメータとしてはbrokersを渡すことができます。だから、公式の文書は私に少し誤解を招くようだ。

from("kafka:{{consumer.topic}}?brokers={{kafka.host}}:{{kafka.port}}" 
        + "&maxPollRecords={{consumer.maxPollRecords}}" 
        + "&consumersCount={{consumer.consumersCount}}" 
        + "&seekTo={{consumer.seekTo}}" 
        + "&groupId={{consumer.group}}") 
        .routeId("FromKafka") 
       .log("${body}"); 

しかし、一般的なアドバイスとして:キャメルはopen sourceあるので、あなたは常に、コードを見て、githubの上でそこに例を持つことができます。あなたがそこに投稿したスタックトレースの行を見つけて、欠落しているものを追跡することもできます。

+0

この構造体では何もエラーは発生しませんが、コンシューマはメッセージ待ちのままではなくコード0ですぐに終了します – Giuseppe

+0

ポーリングコンシューマは必要ありませんか? http://camel.apache.org/polling-consumer.html –

+0

私はRabbitMQコンポーネントを使用していました。着信ストリームを聴いたり、聞いたりするのにエンドポイント情報が必要でした。すでに使用していたコンポーネントも同じでしたが、コンポーネント自体にデフォルトのポーリング間隔がありますので、必要ないと思います。 – Giuseppe

関連する問題