graylog 在消息进入之后(对应input ),选择不同的handler 处理之后,会到不同的buffer 中
对于DirectMessageHandler 的会到ProcessBuffer 中,对于是否开启了Journalling,处理会不一样
开启了会先使用RawMessageEncoderHandler,然后是JournallingMessageHandler ,之后实现一个
类似kafka 消息处理的模式进行消息处理,没有使用Journalling 的,就是上边的DirectMessageHandler 会依赖ProcessBuffer
ProcessBuffer 也依赖了Disruptor,对于进入的消息利用RingBuffer保证有序性,同时和input 一样也具有多处理能力
依赖ProcessBufferProcessor,ProcessBufferProcessor 比较核心,包含了消息处理,以及输出buffer,后续会介绍
参考资料
https://github.com/Graylog2/graylog2-server/blob/626be1f0d80506705b5ba41fbea33c2ec0164bc0/graylog2-server/src/main/java/org/graylog2/shared/buffers/InputBufferImpl.java
https://github.com/Graylog2/graylog2-server/blob/626be1f0d80506705b5ba41fbea33c2ec0164bc0/graylog2-server/src/main/java/org/graylog2/system/processing/ProcessingStatusRecorder.java
https://github.com/Graylog2/graylog2-server/blob/626be1f0d80506705b5ba41fbea33c2ec0164bc0/graylog2-server/src/main/java/org/graylog2/shared/buffers/processors/ProcessBufferProcessor.java