有关创建Kafka端点支持的任何指针吗?

时间:2018-03-12 21:17:46

标签: apache-kafka citrus-framework

我迫切需要使用Citrus Framework支持Kafka集成测试。我正在考虑将现有的jms模块作为示例/框架并使用Spring Kafka。我应该注意哪些指针或陷阱?我愿意,假设我成功,将模块捐赠回项目。

1 个答案:

答案 0 :(得分:0)

以下是如何在Citrus中使用Kafka Camel组件的示例:

@Bean
    public CamelContext camelKafkaAdapterContext() throws Exception {
        SpringCamelContext context = new SpringCamelContext();
        context.addRouteDefinition(new RouteDefinition()
                .from("kafka:localhost:9092?topic=test&zookeeperHost=localhost&zookeeperPort=2181&serializerClass=kafka.serializer.StringEncoder")
                .to("log:com.consol.citrus.camel?level=DEBUG")
                .to("seda:kafka-buffer"));
        return context;
    }

    @Bean
    public CamelEndpoint kafkaEndpoint(CamelContext camelContext) {
        CamelEndpoint endpoint = new CamelEndpoint();
        endpoint.getEndpointConfiguration().setCamelContext(camelContext);
        endpoint.getEndpointConfiguration().setEndpointUri("seda:kafka-buffer");

        return endpoint;
    }

首先定义一个Camel上下文,当您使用Citrus运行任何测试时,它将是startet。实例化后,此Camel组件将从配置的topic读取并将所有消息发送到缓冲区seda:kafka-buffer seda 仅用作示例)。之后,您可以使用Citrus CamelEndpoint在任何测试中读取来自该缓冲区的消息。

receive(action -> action.endpoint(kafkaEndpoint)
                .messageType(MessageType.JSON)
                .payload(...);

注意,这只是我组装的一个例子。我还没有测试过这个确切的设置,但是一旦你正确配置了Camel Context,它就会起作用。