一、拦截器简介
拦截器是简单插件式组件,设置在Source和Source写入数据的Channel之间。每个拦截器实例只处理同一个Source接收到的事件。
因为拦截器必须在事件写入channel之前完成转换操作,只有当拦截器已成功转换事件后,channel(和任何其他可能产生超时的source)才会响应发送事件的客户端或sink,因此在拦截器中进行大量重量级的处理并不是一个好主意。如果拦截器中的处理是重量级的、耗时的,那么需要相应的调整超时时间属性。
拦截器一般用于分析事件以及在需要的时候丢弃事件,通常情况是,拦截器给事件插入报头,这些事件后续用于HDFS Sink(用于时间戳或者用于基于报头的分桶)、HBase Sink(用于行键)等。这些事件报头也经常在复杂Channel处理器中用于将流分为多个流的分支,或者基于优先级将事件发送到不同的Sink中,这些事件报头是拦截器分析的内容。
二、拦截器类型