在聊自定义组件前,先了解下Flume的事务。
Flume事务
自定义拦截器
案例: 自定义拦截器,将不同内容发往不同Channel,然后分发到不同的分析系统Flume2 和Flume3。
1.创建一个 maven 项目,并引入以下依赖。
<dependency>
<groupId>org.apache.flume</groupId>
<artifactId>flume-ng-core</artifactId>
<version>1.7.0</version>
</dependency>
2.定义 CustomInterceptor 类并实现 Interceptor 接口。 打包后放入flume的lib目录
package com.xiaomao.flume;/**
* CreateBy zxmao on 2020/9/30 0030 10:20
*/
import org.apache.flume.Context;
import org.apache.flume.Event;
import org.apache.flume.interceptor.Interceptor;
import java.util.List;
/**
* Copyright (C) zhongda
*
* @author zx
* @date 2020/9/30 0030 10:20
* @description:
*/
public class CustomInteceptor implements Interceptor {
public void initialize() {
}
public Event intercept(Event event) {
//处理业务逻辑
String body = new String(event.getBody());
if(body.contains("xiaomao")){
event.getHeaders().put("type","xiaomao");
}else{
event.getHeaders().put("type","other");
}
return event;
}
public List<Event> intercept(List<Event>