【问题标题】:Can Apache Camel inside Spring get previous messages from Kafka?Spring 中的 Apache Camel 可以从 Kafka 获取以前的消息吗?
【发布时间】:2021-03-10 04:01:15
【问题描述】:

我有一个 Spring Boot 应用程序,它通过 Apache Camel 使用来自 Apache Kafka 的消息

public void init() throws Exception {
    DefaultCamelContext camelContext = new DefaultCamelContext();
    camelContext.addRoutes(new RouteBuilder() {
        @Override
        public void configure() {
            from("kafka:destination?brokers=<host>:9092&maxBlockMs=5000&reconnectBackoffMaxMs=2000")
                    .process(senderProcessor);
        }
    });

    camelContext.start();
}

如果消息到达时上下文已经启动,它就可以工作。但是,如果在应用程序启动之前将消息发送到 Kafka,则应用程序不会使用这些消息。我相信一定有办法得到它们。是真的吗?

【问题讨论】:

    标签: java spring apache-kafka apache-camel


    【解决方案1】:

    有一个名为auto.offset.resetKafka消费者设置,其默认值为latest

    Camel-Kafka 中,设置名为autoOffsetReset

    这意味着,消费者忽略所有现有消息,只使用新消息。如果将其设置为earliest,则消费者会消费所有现有消息。

    请注意,这仅在消费者第一次连接时才重要。一旦它连接并消费消息,它应该将偏移量提交回代理,并在重新连接时使用这个保存的偏移量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-14
      • 1970-01-01
      • 2014-03-01
      • 2016-06-04
      • 1970-01-01
      • 2017-06-18
      相关资源
      最近更新 更多