小编Car*_*sto的帖子

Spring Kafka异步发送调用块

我正在使用Spring-Kafka版本1.2.1,当Kafka服务器关闭/无法访问时,异步发送调用阻塞一段时间.它似乎是TCP超时.代码是这样的:

ListenableFuture<SendResult<K, V>> future = kafkaTemplate.send(topic, key, message);
future.addCallback(new ListenableFutureCallback<SendResult<K, V>>() {
    @Override
    public void onSuccess(SendResult<K, V> result) {
        ...
    }

    @Override
    public void onFailure(Throwable ex) {
        ...
    }
});
Run Code Online (Sandbox Code Playgroud)

我已经快速浏览了Spring-Kafka代码,它似乎只是将任务传递给kafka客户端库,将回调交互转换为未来的对象交互.看看kafka客户端库,代码变得更加复杂,我没有花时间去理解它,但我想它可能在同一个线程中进行远程调用(元数据,至少?).

作为用户,我期望返回未来的Spring-Kafka方法立即返回,即使远程kafka服务器无法访问.

如果我的理解是错误的,或者如果这是一个错误,任何确认将是受欢迎的.我现在最终将它变为异步.

另一个问题是Spring-Kafka文档在开始时说它提供了同步和异步发送方法.我找不到任何不返回期货的方法,也许文档需要更新.

如果需要,我很乐意提供任何进一步的细节.谢谢.

spring asynchronous send producer apache-kafka

11
推荐指数
2
解决办法
8475
查看次数

标签 统计

apache-kafka ×1

asynchronous ×1

producer ×1

send ×1

spring ×1