今天编写一个storm的topology,bolt的逻辑跟之前的类似。

为了减少重复代码,我建了个抽象基类,存放bolt的公共逻辑,设计了几个abstract方法,不同的逻辑部分由子类实现。

基类日志定义如下:

private static final Logger LOG = LoggerFactory.getLogger(AbstractXxxBolt.class);

Logger是项目封装的,用于ELK的对象,考虑到子类可能用到,我把它的static去掉,AbstractXxxBolt.class改成了getClass();

本机启动topology报错:storm java.io.NotSerializableException Logger;

改回static后,启动正常;

子类中,有引用其它工程的dubbo服务接口,开始写在构造函数中初始化的,

private XxxService xxxService;

SubClass() {
super();
xxxService = XxxUtil.getBean(XxxService.class);
}

本机启动topology报错:storm NotSerializableException com.alibaba.dubbo.common.bytecode.proxy0

解决方法:

将子类构造函数中的赋值去掉,抽象一个doPrepare()方法,在基类的prepare()方法中调用

子类实现doPrepare(),在其中xxxService = XxxUtil.getBean(XxxService.class);

-----------------------------------------------------------------------------------------------------------------------------

The supervisor instantiates the bolts, sends them to the workers, and then calls prepare() on all of them. Therefore, anything
that isn't serializable that is instantiated before prepare() causes this process to fail.

-----------------------------------------------------------------------------------------------------------------------------

参考:

https://blog.csdn.net/wanghai__/article/details/8997895

最新文章

  1. .NET 基础一步步一幕幕[方法、结构、枚举]
  2. jquery中css获取颜色属性
  3. mongodb-索引
  4. [CareerCup] 15.5 Denormalization 逆规范化
  5. 关于RESTFUL API 安全认证方式的一些总结
  6. fafu 1568 Matrix(二分匹配+二分)
  7. WTIR Updating Page
  8. 淘宝API调用 申请 获取session key
  9. Hibernate之Hibernate的下载与安装
  10. 3、Android构建仪表测试
  11. Tomcat使用shutdown.bat关闭会将其他Tomcat关掉的问题
  12. 【Linux常用工具】
  13. leetcode-递增的三元子序列
  14. Xamarin iOS教程之使用按钮接接收用户输入
  15. SQL Server优化50法(转载)
  16. oracle 视图views
  17. ios开发之--使用toolbar调整item之间的间隔
  18. win10下安装MySQL5.7.20
  19. 解决图片浮动调节不了的问题(使用vertical-align属性)
  20. TCP粘包处理

热门文章

  1. 前端通过url下载文件方法
  2. 主流RPC框架详解,以及与SOA、REST的区别
  3. OpenCl入门getting-started-with-opencl-and-gpu-computing
  4. eclipse创建Maven Web项目以及无法修改Project Facets
  5. Redis分布式缓存安装和使用
  6. 计算机基础与python入门
  7. 共享手机网络给电脑(USB连接)
  8. Centos使用光盘yum源
  9. Django 外键、多对多插入数据方法
  10. okhttp拦截器之CacheInterceptor解析