BaseBasicBolt和BaseRichBolt的区别

本文详细解析了Storm框架下BaseBasicBolt与BaseRichBolt的主要区别。BaseBasicBolt在数据发射时自动关联输入tuple,并在execute方法结束后自动ack;而BaseRichBolt需显式指定数据源tuple并手动调用ack或fail方法。

BaseBasicBolt和BaseRichBolt的区别


  Storm的Bolt有BaseBasicBoltBaseRichBolt
  BaseRichBolt中,BasicOutputCollector在emit数据的时候,需要显示指定该数据的源tuple要加上第二个参数anchor tuple,以保持tracker链路。即collector.emit(oldTuple, newTuple)。并且需要在execute执行成功后调用OutputCollector.ack(tuple), 当失败处理时,执行OutputCollector.fail(tuple)。
  BaseBasicBolt中,BasicOutputCollector在emit数据的时候,会自动和输入的tuple相关联,而在execute方法结束的时候那个输入tuple会被自动ack。

实现日志监控并查看系统操作日志可以通过不同的技术手段,以下为两种方法: - **Spring Boot通过AOP实现系统日志记录**:可以通过AOP(面向切面编程)来实现Controller层Service层的日志监控。对于Controller层,需要设计日志表结构,其日志表的字段包括自增ID、客户端ip、请求映射路径、方法名、参数、操作人姓名、接口请求时间、接口返回时间、总消耗时间、接口返回数据、创建时间、创建人、修改时间、修改人以及是否删除标记等信息,通过该表记录系统操作日志。对于Service层,可以使用自定义的监控注解`ServiceMonitor`来实现日志监控,该注解可以作用于方法上,用于标识需要监控的方法。 ```java // 日志表结构设计相关字段示例 // id自增ID // client_ip客户端ip // req_uri请求映射路径 // ... // Service监控注解示例 import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Documented @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface ServiceMonitor { String value() default ""; } ``` - **日志监控告警系统的设计与实现**:可以使用自定义的`SaveMessage2MySql`类来实现日志的保存操作,该类继承自`BaseBasicBolt`。在`execute`方法中,从输入的`Tuple`中获取`Record`对象,并调用`MonitorHandler`的`save`方法将记录保存。 ```java import org.apache.storm.topology.BasicOutputCollector; import org.apache.storm.topology.OutputFieldsDeclarer; import org.apache.storm.topology.base.BaseBasicBolt; import org.apache.storm.tuple.Tuple; import java.util.logging.Logger; public class SaveMessage2MySql extends BaseBasicBolt { private static Logger logger = Logger.getLogger(SaveMessage2MySql.class); public void execute(Tuple input, BasicOutputCollector collector) { Record record = (Record) input.getValueByField("record"); MonitorHandler.save(record); } public void declareOutputFields(OutputFieldsDeclarer declarer) { } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值