Java ApacheCamel和kafka集成

Java ApacheCamel和kafka集成,java,apache-camel,apache-kafka,Java,Apache Camel,Apache Kafka,如前所述,我试图测试camel与kafka的集成 下面是我的代码 public class KafkaTest { public static void main(String args[]) throws Exception { CamelContext context = new DefaultCamelContext(); context.addRoutes(new RouteBuilder() { public void

如前所述,我试图测试camel与kafka的集成

下面是我的代码

public class KafkaTest {

    public static void main(String args[]) throws Exception {
        CamelContext context = new DefaultCamelContext();

        context.addRoutes(new RouteBuilder() {
            public void configure() {
                from("kafka:test?zkConnect=localhost:2181&metadataBrokerList=localhost:9092")
                .process(new Processor() {
                    @Override
                    public void process(Exchange exchange) throws Exception {
                        System.out.println(exchange.getIn().getBody());
                    }
                })
                .end();
            }
        });

        context.start();
        while (true) {

        }
    }
}
但是,我得到了以下错误

Exception in thread "main" org.apache.camel.FailedToCreateRouteException: Failed to create route route1: Route(route1)[[From[kafka:test?zkConnect=localhost:2181&... because of Failed to resolve endpoint: kafka://test?amp%3BmetadataBrokerList=localhost%3A9092&zkConnect=localhost%3A2181 due to: Failed to resolve endpoint: kafka://test?amp%3BmetadataBrokerList=localhost%3A9092&zkConnect=localhost%3A2181 due to: There are 2 parameters that couldn't be set on the endpoint. Check the uri if the parameters are spelt correctly and that they are properties of the endpoint. 

Unknown parameters=[{metadataBrokerList=localhost:9092, zkConnect=localhost:2181}]

请建议可能缺少的内容。

您应该使用中指定的正确参数名称

from("kafka:localhost:9092?topic=test&zookeeperHost=localhost&zookeeperPort=2181")
github上的wiki中描述的您所引用的版本已提交给Apache,并在此后有所更改。

是否使用endpoint类

比如:

 public static KafkaEndpoint endpoint(String host, String port, String topic, String offset, String groupId) {
        String endpointUri = "kafka://" + host + ":" + port;
        KafkaEndpoint endpoint = new DefaultCamelContext().getEndpoint(endpointUri, KafkaEndpoint.class);
        endpoint.getConfiguration().setTopic(topic);
        endpoint.getConfiguration().setKeyDeserializer("org.apache.kafka.common.serialization.StringDeserializer");
        endpoint.getConfiguration().setValueDeserializer("org.apache.kafka.common.serialization.StringDeserializer");
        endpoint.getConfiguration().setAutoOffsetReset(offset);
        endpoint.getConfiguration().setGroupId(groupId);
        return endpoint;
    }

PollingConsumer consumer = endpoint.createPollingConsumer();


有两个骆驼卡夫卡组件漂浮在那里。=>3岁。使用OP使用的格式。=>CURRENT使用此答案中表示的参数。
new RouteBuilder() {
            public void configure() {
                from(endpoint)
                .process(new Processor() {
                    @Override
                    public void process(Exchange exchange) throws Exception {
                        System.out.println(exchange.getIn().getBody());
                    }
                })
                .end();
            }
        }