【发布时间】:2021-12-28 23:54:38
【问题描述】:
使用 Apache Kafka 我想将从 topic1 收到的记录传递到 topic2 流。但仔细阅读文档后,我无法将事件发送到 topic2 流。这是我的代码
@Test
public void topicToTopic() throws InterruptedException {
String broker = embeddedKafkaBroker.getBrokersAsString();
String topic1 = "Consumer-topic-1";
String topic2 = "Consumer-topic-2";
Properties config = getSourceConfig(broker);
Serde<String> stringSerde = Serdes.String();
StreamsBuilder builder = new StreamsBuilder();
builder.stream(topic1, Consumed.with(stringSerde, stringSerde))
.peek((k, v) -> System.out.println("Topic 1 Observed event:" + v))
.mapValues((ValueMapper<String, String>) String::toUpperCase)
.to(topic2, Produced.with(stringSerde, stringSerde));
Topology topology = builder.build();
KafkaStreams streams = new KafkaStreams(topology, config);
streams.start();
Thread.sleep(2000);
publishMessages(broker, topic1);
StreamsBuilder builder1 = new StreamsBuilder();
builder1.stream(topic2, Consumed.with(stringSerde, stringSerde))
.foreach((key, value) -> System.out.println("key: " + key + " -> " + value));
Topology topology1 = builder1.build();
KafkaStreams streams1 = new KafkaStreams(topology1, config);
streams1.start();
Thread.sleep(2000);
streams.close();
streams1.close();
}
知道有什么问题吗?
问候
【问题讨论】:
-
如果你想写一个单元测试,Kafka Streams 有 TopologyTestDriver
-
我正在使用嵌入式 Kafka
-
我可以看到,但它并不是真正适合 Kafka Streams 单元测试的库confluent.io/blog/testing-kafka-streams
-
同意,假设我在集成测试中使用它。无论如何,我希望它无论如何都不应该工作。
-
能分享一下publishMessages功能吗?
标签: java apache-kafka apache-kafka-streams