graylog MessageInput 简单说明
input 是graylog 处理消息的核心,内部对于网络的处理是基于了netty 框架,消息的核心基类是MessageInput
基类的能力
如下图,包含了基本常用的配置,状态,以及input 节点信息,同时还包含input 组件的静态资源,以及contenpack (后续说明)
每个input 会包含一个transport,知道基于那种通道处理消息,对于消息的处理包含了processRawMessage 方法,数据都是放到
InputBuffer 中的,MessageInput 包含了生命周期的能力,stop,launch,checkConfiguration,terminate,配置管理,以及contentpack
的配置,同时还有一个比较重要的编码器,知道如何处理消息的,消息处理比较依赖InputBuffer 这个比较重要
实现子类
参考下图,包含了不少常用的实现
MessageInput 的使用
InputLauncher,InputSetupService,Transport ,InputRegistry 都会使用到MessageInput,InputLauncher 是如何启动MessageInput的(核心是编码器以及通道)
InputSetupService 对于MessageInput 状态的一个管理,也就是我们界面上的操作,Transport 需要依赖MessageInput 知道如何创建通道,InputRegistry 类似input
的仓库,我们可以知道当前存在的input 以及运行情况(实际上就是一个内存存储)
说明
以上是对于MessageInput 的简单说明,对于消息处理会单独说明
参考资料
https://github.com/Graylog2/graylog2-server/blob/626be1f0d80506705b5ba41fbea33c2ec0164bc0/graylog2-server/src/main/java/org/graylog2/shared/initializers/InputSetupService.java
https://github.com/Graylog2/graylog2-server/blob/626be1f0d80506705b5ba41fbea33c2ec0164bc0/graylog2-server/src/main/java/org/graylog2/shared/inputs/InputLauncher.java
https://github.com/Graylog2/graylog2-server/blob/626be1f0d80506705b5ba41fbea33c2ec0164bc0/graylog2-server/src/main/java/org/graylog2/plugin/inputs/MessageInput.java
https://github.com/Graylog2/graylog2-server/blob/626be1f0d80506705b5ba41fbea33c2ec0164bc0/graylog2-server/src/main/java/org/graylog2/shared/buffers/InputBufferImpl.java