我正在用Spring Boot编写应用程序,因此我要写给Kafka:
I'm writing an application with Spring Boot so to write to Kafka I do:
@Autowired private KafkaTemplate<String, String> kafkaTemplate;然后进入我的方法:
kafkaTemplate.send(topic, data)但是我觉得我只是依靠它来工作,我怎么知道它是否起作用?如果它是异步的,那么返回200代码并希望它能正常工作是个好习惯吗?我很困惑.如果没有Kafka,这不会失败吗?是否不应该提示我捕获异常?
But I feel like I'm just relying on this to work, how can I know if this has worked? If it's asynchronous, is it a good practice to return a 200 code and hoped it did work? I'm confused. If Kafka isn't available, won't this fail? Shouldn't I be prompted to catch an exception?
推荐答案是的,如果Kafka不可用,则.send()调用将失败,但是如果您异步发送它,则不会通知任何人.您可以指定将来最终完成时要执行的回调.完整的界面规范: kafka .apache/20/javadoc/org/apache/kafka/clients/producer/Callback.html
Yes, if Kafka is not available, that .send() call will fail, but if you send it async, no one will be notified. You can specify a callback that you want to be executed when the future finally finishes. Full interface spec here: kafka.apache/20/javadoc/org/apache/kafka/clients/producer/Callback.html
从此处的官方Kafka Javadoc中获取: kafka.apache/20/javadoc/index.html?org/apache/kafka/clients/producer/KafkaProducer.html
From the official Kafka javadoc here: kafka.apache/20/javadoc/index.html?org/apache/kafka/clients/producer/KafkaProducer.html
完全无阻塞的用法可以利用Callback参数来 提供将在请求完成后调用的回调.
Fully non-blocking usage can make use of the Callback parameter to provide a callback that will be invoked when the request is complete. ProducerRecord<byte[],byte[]> record = new ProducerRecord<byte[],byte[]>("the-topic", key, value); producer.send(myRecord, new Callback() { public void onCompletion(RecordMetadata metadata, Exception e) { if(e != null) { e.printStackTrace(); } else { System.out.println("The offset of the record we just sent is: " + metadata.offset()); } } });
更多推荐
断言卡夫卡派遣工作
发布评论