当主题不可用/kafka 代理关闭时,KafkaTemplate 无法抛出异常

Unable to throw exception by KafkaTemplate when topic is not available/ kafka broker is down

我正在通过 Kafka 模板向 Kafka 发送消息,但我想测试异常,所以我提供了错误的主题名称,但是当我 运行 代码时,它显示“获取相关 ID 为 2 的元数据时出错: {ocf-oots-gr-outbound_123=LEADER_NOT_AVAILABLE" 不可用,但主题本身是在 Kafka 中创建的,我也可以通过 Kafka 工具看到它,当代理停止时,它也不会抛出异常。

代码:

KafkaTemplate<String, Object> kafkaTemplate = (KafkaTemplate<String, Object>) CommonAppContextProvider.getApplicationContext().getBean("kafkaTemplate");
                    //kafkaTemplate.send(CommonAppContextProvider.getApplicationContext().getEnvironment().getProperty("kafka.transalators.outbound.topic"), kafkaMessageFormat);

ListenableFuture listenableFuture = kafkaTemplate.send(CommonAppContextProvider.getApplicationContext().
                    getEnvironment().getProperty("kafka.transalators.outbound.topic"), kafkaMessageFormat);

listenableFuture.addCallback(new ListenableFutureCallback<SendResult<?, ?>>() {

                        @Override
                        public void onSuccess(SendResult<?, ?> result) {
                            System.out.println("Sent");

                        }
                        @Override
                        public void onFailure(Throwable ex) {
                            throw new KafkaException();
                        }

                    });
                }

应该抛出的异常可能是KafkaException、TimeOutException、Interrupted异常等

您必须在将来调用 get(time, timeUnit) 才能获得结果(成功或失败)。