找不到所需类型:BiConsumer

问题描述 投票:0回答:1

我想将此 Java 代码迁移到 Spring Boot 3:

public void send(String topic, K key, V message, BiConsumer<SendResult<K, V>, Throwable> callback) {
    CompletableFuture<SendResult<K, V>> future = kafkaTemplate.send(topic, key, message);
    if (Objects.nonNull(callback)) {
      future.whenComplete(callback);
    }
  }
......

// call kafka method
kafkaProducer().send("topic", "key",
        "messge", listenableFutureCallback("12345"));

......
    
    private ListenableFutureCallback listenableFutureCallback(String userId) {
        return new ListenableFutureCallback() {
          @Override
          public void onFailure(Throwable ex) {
            .......
          }
    
          @Override
          public void onSuccess(Object result) {
            ........
          }
        };
      }

我在这一行遇到错误:

listenableFutureCallback("12345")

Required type: BiConsumer <org.springframework.kafka.support.SendResult<java.lang.String,java.lang.String>,
java.lang.Throwable>
Provided: ListenableFutureCallback

你知道我应该如何迁移/替换

ListenableFutureCallback
以便从
BiConsumer
Java 方法返回
listenableFutureCallback
吗?

spring-boot apache-kafka spring-kafka
1个回答
0
投票

这似乎是 BiConsumer 导入的问题。您应该使用“java.util.function.BiConsumer”中的 BiConsumer,而不是“org.apache.kafka.commonKafkaFuture.BiConsumer”。

PS:据我了解,ListenableFutureCallback 在 Spring 6.0 中已被弃用。请尝试从您的代码中删除它并使用 CompletableFuture 代替。 https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/util/concurrent/ListenableFutureCallback.html

© www.soinside.com 2019 - 2024. All rights reserved.