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