springboot整合整合kafka-生產者監聽器ProducerListener

心有所志發表於2020-11-20

寫在前面:各位看到此部落格的小夥伴,如有不對的地方請及時通過私信我或者評論此部落格的方式指出,以免誤人子弟。多謝! 

  補充一個簡單的東西,生產者監聽器,生產者監聽器ProducerListener與帶回撥的kafkatemplate實現類似的功能,或者說是它的一個補充,實現生產者監聽器也很簡單,只要實現ProducerListener介面,重寫onSuccess和onError方法即可,從方法名可看出,onSuccess是訊息傳送成功後執行的方法,onError是訊息傳送失敗後執行的方法,可以在監聽器中進行訊息傳送後進一步的處理,貼下程式碼:

@Component
public class CustomProducerListener implements ProducerListener<String, String> {

    /**
     * 成功回撥
     */
    @Override
    public void onSuccess(ProducerRecord<String, String> producerRecord,
                          RecordMetadata recordMetadata) {
        System.out.println("推送成功,推送資料:" + producerRecord.value());
    }

    /**
     * 失敗回撥
     */
    @Override
    public void onError(ProducerRecord<String, String> producerRecord, Exception exception) {
        System.out.println("推送失敗,推送資料:" + producerRecord.value() + ",失敗原因:" + exception.getMessage());
    }
}

我本想在KafkaProducerConfig類中producerConfigs方法中追加配置監聽器的類,但是找了下ProducerConfig類中沒有監聽器的引數,而kafkaTemplate中有setProducerListener方法可以設定監聽器,新增測試方法,並可以像下面這樣配置監聽器:

    @GetMapping("/send6")
    public String send6(String message) {
        kafkaTemplate.setProducerListener(producerListener);
        kafkaTemplate.send(topic, message);
        return "success";
    }

啟動專案,訪問http://localhost:8080/send6?message=test6 結果如下:

可看到列印了 “推送成功,推送資料:test6” ,配置的監聽器生效了。

到目前為止,通過前幾篇的學習記錄,我們可以收發訊息,訊息傳送到指定分割槽,接收指定分割槽的訊息,對傳送的資訊做過濾  對收到的資訊做處理,其它更多的功能感覺學起來也挺費勁,暫時先不更了,先去學習下kafka的基本知識,再繼續完善整合springboot相關的文章,順便推薦一本書,是我準備學習kafka後從網上找了很久才找到的,看目錄反正是挺詳細的,書名:《深入理解Kafka_核心設計與實踐原理》

 

相關文章