攔截器:允許應用在不修改邏輯的情況下,動態的實現一組可插拔的時間處理邏輯鏈;它被曝光貴陽在主業務操作的前後多個時間點插入對應的 “攔截邏輯”;
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攔截器使用場景
- 客戶端監控
- 端到端系統性能檢測 : 比如監控一條消息從生產到最後消費的端到端延時;
- 消息審計
實例化 – 延時監控
待補充…