我想使用一个水槽代理,根据定义的函数拆分 body 数据,并将 body 数据的一部分发送到一个接收器,另一部分发送到另一个接收器。
我是否需要为此实现自定义拦截器,或者是否有我在阅读 Flume 用户指南时错过的默认解决方案?
最佳答案
是的,您必须编写自定义拦截器。
您可以使用 Interceptor 的拦截方法并根据您的功能拆分每个事件的主体。稍后您可以为主体的特定部分分配一个有意义的 header ,该 header 可用作水槽扇出流的重定向或 channel 选择器参数。
准备好代码后,您可以在 flume conf
文件中添加以下属性并实现多路复用 -
多路复用选择器的映射:
Agent.sources.Source1.selector.type = multiplexing
Agent.sources.Source1.selector.header = someHeader
Agent.sources.Source1.selector.mapping.Value = Channel1
Agent.sources.Source1.selector.mapping.Value2 = Channel1 Channel2
Agent.sources.Source1.selector.mapping.Value3 = Channel2
关于java - 如何使用 flume 将 body 中的数据拆分到不同的 channel 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34749191/