graylog ProcessBufferProcessor 简单说明

ProcessBufferProcessor 的核心是进行消息处理,会调用消息处理器,同时会将消息放到OutputBuffer 中
ProcessBufferProcessor 实际上是ProcessBuffer 中Disruptor 的一个handler

核心处理

handleMessage 方法

 
private void handleMessage(@Nonnull Message msg) {
        msg.addStream(defaultStreamProvider.get());
        Messages messages = msg;
       // 消息处理器,进行消息加工
        for (MessageProcessor messageProcessor : orderedMessageProcessors) {
            messages = messageProcessor.process(messages);
        }
 
        for (Message message : messages) {
            message.ensureValidTimestamp();
 
            if (!message.hasField(Message.FIELD_GL2_MESSAGE_ID) || isNullOrEmpty(message.getFieldAs(String.class, Message.FIELD_GL2_MESSAGE_ID))) {
                // Set the message ID once all message processors have finished
                // See documentation of Message.FIELD_GL2_MESSAGE_ID for details
                message.addField(Message.FIELD_GL2_MESSAGE_ID, ulid.nextULID());
            }
 
            // The processing time should only be set once all message processors have finished
            message.setProcessingTime(Tools.nowUTC());
           // 消息处理标记 
            processingStatusRecorder.updatePostProcessingReceiveTime(message.getReceiveTime());
 
            if(failureSubmissionService.submitProcessingErrors(message)) {
              // 消息放到 outputBuffer 中
                outputBuffer.insertBlocking(message);
            }
        }
    }

MessageProcessor

MessageProcessor 会调用Filter 进行消息的加工
参考实现

 

 


包含的filter 实现

 

 

参考资料

https://github.com/Graylog2/graylog2-server/blob/626be1f0d80506705b5ba41fbea33c2ec0164bc0/graylog2-server/src/main/java/org/graylog2/shared/buffers/processors/ProcessBufferProcessor.java
https://github.com/Graylog2/graylog2-server/blob/626be1f0d80506705b5ba41fbea33c2ec0164bc0/graylog2-server/src/main/java/org/graylog2/plugin/messageprocessors/MessageProcessor.java
https://github.com/Graylog2/graylog2-server/blob/626be1f0d80506705b5ba41fbea33c2ec0164bc0/graylog2-server/src/main/java/org/graylog2/plugin/filters/MessageFilter.java

posted on   荣锋亮  阅读(58)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2020-10-04 drill 学习 七 drill jdbc 连接说明
2020-10-04 drill 学习 六 数据存储插件配置
2020-10-04 drill 学习 五 配置说明- 安全
2020-10-04 drill 学习 五 配置说明- 内存
2020-10-04 drill 学习 四 drill参考案例
2020-10-04 drill 学习 三 drill 参考架构介绍二
2017-10-04 fn project Message Queues 配置

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示