练习自定义的flume拦截器使用的打包配置

在pom中添加配置

  1. <build>  
  2.     <plugins>  
  3.   
  4.         <plugin>  
  5.             <groupId>org.apache.maven.plugins</groupId>  
  6.             <artifactId>maven-assembly-plugin</artifactId>  
  7.             <version>2.5.5</version>  
  8.             <configuration>  
  9.                 <archive>  
  10.                     <manifest>  
  11.                         <mainClass>com.xxg.Main</mainClass>  
  12.                     </manifest>  
  13.                 </archive>  
  14.                 <descriptorRefs>  
  15.                     <descriptorRef>jar-with-dependencies</descriptorRef>  
  16.                 </descriptorRefs>  
  17.             </configuration>  
  18.         </plugin>  
  19.   
  20.     </plugins>  
  21. </build>  

网上别人的地方用到了三种,我只学中了这一种

然后选择你的maven工程项目,右键properties

红框文件夹下会出现你要的打包好的文件

在dos命令行下切换到上面红框的目录下

 1 输入命令mvn clean,清理一下

2mvn package assembly:single 

3 返回到myeclipse下选择target目录右键refresh一下就可以看到你要打包好的文件

4 打包后会在target目录下生成一个xxx-jar-with-dependencies.jar文件,这个文件不但包含了自己项目中的代码和资源,还包含了所有依赖包的内容。所以可以直接通过java -jar来运行。嫌弃名字长的可以换个名字

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个Java自定义flume拦截器的示例代码,可以用于拦截指定文件中的地名数据: ```java import org.apache.flume.Context; import org.apache.flume.Event; import org.apache.flume.interceptor.Interceptor; import java.nio.charset.Charset; import java.util.List; public class LocationInterceptor implements Interceptor { @Override public void initialize() { } @Override public Event intercept(Event event) { String body = new String(event.getBody(), Charset.forName("UTF-8")); if (body.contains("北京") || body.contains("上海") || body.contains("广州")) { return event; } else { return null; } } @Override public List<Event> intercept(List<Event> events) { for (int i = 0; i < events.size(); i++) { Event interceptedEvent = intercept(events.get(i)); if (interceptedEvent == null) { events.remove(i); i--; } else { events.set(i, interceptedEvent); } } return events; } @Override public void close() { } public static class Builder implements Interceptor.Builder { @Override public void configure(Context context) { } @Override public Interceptor build() { return new LocationInterceptor(); } } } ``` 上面的代码中,我们定义了一个`LocationInterceptor`类,用于拦截包含指定地名数据的日志事件。在`intercept`方法中,我们获取到事件的内容,判断其中是否包含北京、上海或广州这三个地名,如果包含则返回该事件,否则返回null。在`intercept(List<Event> events)`方法中,我们对事件列表中的每个事件都进行拦截操作,并返回拦截后的事件列表。 接下来,是flume配置文件示例: ```properties # flume配置文件 # 定义 source、channel 和 sink a1.sources = r1 a1.channels = c1 a1.sinks = k1 # 定义 source 的类型、参数和拦截器 a1.sources.r1.type = exec a1.sources.r1.command = tail -F /path/to/your/log/file a1.sources.r1.interceptors = i1 a1.sources.r1.interceptors.i1.type = com.example.LocationInterceptor$Builder # 定义 channel 的类型和参数 a1.channels.c1.type = memory a1.channels.c1.capacity = 1000 a1.channels.c1.transactionCapacity = 100 # 定义 sink 的类型、参数和 channel a1.sinks.k1.type = logger a1.sinks.k1.channel = c1 # 绑定 source、channel 和 sink a1.sources.r1.channels = c1 a1.sinks.k1.channel = c1 ``` 上面的配置文件中,我们定义了一个名为`LocationInterceptor`的拦截器,并将其绑定到source上。在source中,我们使用`exec`类型的source,指定要收集的日志文件路径。在sink中,我们使用`logger`类型的sink,将日志信息输出到控制台。 注意:在使用这个示例代码时,需要将`/path/to/your/log/file`替换成你要收集的日志文件路径。同时,记得将`LocationInterceptor`类所在的包名修改为你自己的包名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值