是否有任何资源可以帮助我为 Flume-ng 的 HTTPSource 编写自定义处理程序。我阅读了文档,其中有一个 Json 示例处理程序,但我想知道是否有人需要编写一个处理程序来从 XML 消息正文创建 Flume 事件。
HttpSource 现在在 Flume-ng 1.3.1 中可用,但我们需要处理程序来解释我们的数据。
Thanks.
你看过吗JSONHandler 源码 https://git-wip-us.apache.org/repos/asf?p=flume.git;a=blob;f=flume-ng-core/src/main/java/org/apache/flume/source/http/JSONHandler.java;h=197f66a827058af2a4e5d76c1dbfb82a3504c683;hb=HEAD? XMLHandler 的唯一区别是使用一些 XML 反序列化器而不是 Gson。
你只需要转换类似的东西:
<dataList>
<data>
...
</data>
<data>
...
</data>
</dataList>
进入列表简单事件> (或者引入您自己的 HTTPEvent,就像 Flume 开发人员所做的那样JSON事件 https://git-wip-us.apache.org/repos/asf?p=flume.git;a=blob;f=flume-ng-sdk/src/main/java/org/apache/flume/event/JSONEvent.java;h=5c6c0d40702c5b2502a528cf1827066646234a76;hb=HEAD,如果您需要处理不同的编码)。这些事件的主体将包含您的<data>..</data>
块为字符串的字节表示 http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#getBytes%28java.lang.String%29.
我不建议在 Flume 中实现解析这些事件的任何额外业务逻辑,因为业务规则往往会经常变化,而 Flume 作为基础设施软件应该是稳定的。
最后,将代码打包到 jar 中,将该 jar 放入 Flume 的 lib 目录中(对于 Cloudera 的 rpm 发行版,为 /usr/lib/flume-ng/lib ),在 Flume.conf 中将 HTTPSource 的“handler”属性指定为“com. vicky.flume.source.http.XMLHandler”(或类似的东西),重新启动代理即可。
希望这可以帮助。将很高兴回答您的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)