Kafka攔截器概述

攔截器:允許應用在不修改邏輯的情況下,動態的實現一組可插拔的時間處理邏輯鏈;它被曝光貴陽在主業務操作的前後多個時間點插入對應的 “攔截邏輯”;
REQUEST --> INTERCEPTOR1 --> INTERCEPTOR2 --> BUSINESS CONTROLLER
–> INTERCEPTOR3 --> INTERCEPTOR4 --> RESPONSE
Kafka攔截器引入版本:0.10.0.0, 可以在消息發送前後動態植入不同的處理邏輯;

Kafka 攔截器

kafka攔截器支持鏈式編程,可以將一組攔截器串聯成一個大的攔截器, Kafka會按照添加順序依次執行攔截器邏輯;攔截器邏輯最好都是輕量級的;

生產者攔截器

生產者攔截器允許在發送消息前及消息提交成功後植入動態邏輯;
生產者攔截器配置參數:interceptor.classes指定爲攔截器的全限定名;

Properties props = new Properties();
List<String> interceptors = new ArrayList<>();
interceptors.add("com.yourcompany.kafkaproject.interceptors.AddTimestampInterceptor"); // 攔截器 1
interceptors.add("com.yourcompany.kafkaproject.interceptors.UpdateCounterInterceptor"); // 攔截器 2
props.put(ProducerConfig.INTERCEPTOR_CLASSES_CONFIG, interceptors);

生產者攔截器實現

Interface: org.apache.kafka.clients.producer.ProducerInterceptor
method:
1. onSend:消息執行前被調用;
2. onAcknowledgement:消息提交成功或發送失敗時被調用;該方法調用要早於消息發送回執callback; 該方法和onSend執行異步,如果有共享變量需要自行保證線程安全;

消費者攔截器

消費者攔截器支持在消費消息前以及提交爲以後植入動態邏輯
消費者攔截器配置參數:interceptor.classes , 同生產者

消費者攔截器實現

Interface: org.apache.kafka.clients.consumer.ConsumerInterceptor
method:
1. onConsume:消息返回給Consumer之前被調用;
2. onCommit:Consumer 在提交位移之後調用;

Kafka攔截器使用場景

  • 客戶端監控
  • 端到端系統性能檢測 : 比如監控一條消息從生產到最後消費的端到端延時;
  • 消息審計

實例化 – 延時監控

待補充…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章