【问题标题】:Apache Kafka Stream to StreamApache Kafka 流到流
【发布时间】: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


【解决方案1】:

我认为您需要在发布消息之前启动消费者流

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    • 1970-01-01
    • 2018-01-09
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多