storm和spring的结合
1 软件版本 storm0.10 +spring 4.36,网上的例子很少经过摸索除了sport和bolt无法注入其他类都可以了
2 类似于springmvc的结构,bolt service dao
3 因为bolt是由 nimbus 端实例化然后通过序列化传输 到supervisor再反向序列化, 所以bolt和sport无法通过spring注入
4 SpringBeanutil 类的加载工具
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;public class SpringBeanutil implements ApplicationContextAware {private static ApplicationContext applicationContext;@Overridepublic void setApplicationContext(ApplicationContext arg0)throws BeansException {applicationContext=arg0;}public static <T> T getBean(String name,Class<T> clazz){if (applicationContext==null){SpringContext.SpringContextInit();}return applicationContext.getBean(name,clazz);}}
5 spring加载SpringContext
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class SpringContext {
private static ApplicationContext applicationContext ;
public static synchronized void SpringContextInit(){
if (applicationContext==null){
applicationContext =new ClassPathXmlApplicationContext("spring-demo2.xml");
// applicationContext =new ClassPathXmlApplicationContext("spring-hbase.xml");
}
}
6 在bolt的 prepare 中调用对service进行实例化,需要继承BaseRichBolt
public class LoadBolt extends BaseRichBolt {
/**
*
*/
private static final long serialVersionUID = 6084084850932212408L;
Logger log = LoggerFactory.getLogger(LoadBolt.class);
private LoadService service ;
private OutputCollector collector;
/**
* 业务处理
*/
public void execute(Tuple input) {
service.execute(input, collector);
}
//申明了输出tuple的key是data
public void declareOutputFields(OutputFieldsDeclarer declarer) {
declarer.declare(new Fields("line"));
}
@Override
public void prepare(Map map, TopologyContext context, OutputCollector collector) {
this.collector=collector;
service=SpringBeanutil.getBean("loadService", LoadService.class);
}
}
}
7 service中就实现自己的业务逻辑,应该就是和springmvc一样 不过要记得执行collector.ack(input);
经过测试aop功能,类的注入可以顺利使用,不过我使用fatjar来打包的药注意对spring 配置文件的合并,不然会报错,
还有要注意原先在bolt中使用的一些对象放在service中了,要注意有很多类不支持多线程并发操作
service接口
package com.nari.demo2.service;
import backtype.storm.task.OutputCollector;
import backtype.storm.tuple.Tuple;
import org.slf4j.Logger;
public interface BoltService {
String getName();
void execute(Tuple input ,OutputCollector collector) ;
Logger getLog();
}
storm和spring的结合相关推荐
- Jstorm+Spring+mybatis整合
在现有的jstorm框架下,有一个需求:jstorm要对接mysql数据库的实时读取数据, 通过bolt处理,可能要调用service层的框架,最后保存到数据库. 在网上寻找了一下,发现storm集成 ...
- Storm精华问答 | 如何理解spout/bolt的生命周期?
戳蓝字"CSDN云计算"关注我们哦! Storm是Twitter开源的分布式实时大数据处理框架,被业界称为实时版Hadoop.随着越来越多的场景对Hadoop的MapReduce高 ...
- Storm入门(七)可靠性机制代码示例
一.关联代码 使用maven,代码如下. pom.xml 参考 http://www.cnblogs.com/hd3013779515/p/6970551.html MessageTopology. ...
- jstorm mysql_Jstorm+Spring+mybatis整合
在现有的jstorm框架下,有一个需求:jstorm要对接mysql数据库的实时读取数据, 通过bolt处理,可能要调用service层的框架,最后保存到数据库. 在网上寻找了一下,发现storm集成 ...
- 100 行代码透彻解析 RPC 原理
欢迎关注方志朋的博客,回复"666"获面试宝典 文章来源:https://sourl.cn/HpZHvy 引 言 本文主要论述的是"RPC 实现原理",那么首先 ...
- 面试官:你给我手写个RPC框架看看
本文主要论述的是"RPC 实现原理",那么首先明确一个问题什么是 RPC 呢?RPC 是 Remote Procedure Call 的缩写,即,远程过程调用.RPC 是一个计算机 ...
- 透彻解析 RPC 原理
本文主要论述的是"RPC 实现原理",那么首先明确一个问题什么是 RPC 呢?RPC 是 Remote Procedure Call 的缩写,即,远程过程调用.RPC 是一个计算机 ...
- Storm构建分布式实时处理应用初探(转)
最近利用闲暇时间,又重新研读了一下Storm.认真对比了一下Hadoop,前者更擅长的是,实时流式数据处理,后者更擅长的是基于HDFS,通过MapReduce方式的离线数据分析计算.对于Hadoop, ...
- spring cloud 日志_微服务架构开发实战:ElasticStack实现日志集中化
常见日志集中化的实现方式 有许多现成的可用于实现集中式日志记录的解决方案,它们使用不同的方法.体系结构和技术.理解所需的功能并选择满足需求的正确解决方案非常重要. 日志托运 有一些日志托运组件可以与其 ...
最新文章
- 天天象棋 残局闯关 第18关
- STL源码剖析---vector
- C++彩色数据流动界面
- Windows组策略完善主机安全整改实战(1)
- MATLAB显示错误使用untitled,新手,用gui界面画李萨如图,出错,求解答
- dbsync for oracle ms sql,DBSync for Firebird and MSSQL
- 操作系统之进程管理:3、进程控制(进程状态转化的实现)、原语、进程通信(共享、管道、消息)
- python locust_python locust--性能测试框架从零开始(三)
- python基础文件读写(十五)
- Java基础学习总结(37)——Java23中设计模式(Design Patterns)详解
- python学习(10)字典学习,写一个三级菜单程序
- Pytorch——搭建深度神经网络的基本流程
- 秘笈|如何利用DNS做好网络安全工作
- RocketMq在windows下安装
- android nfc读写cpu卡,react-native调用nfc读写cpu卡、m1卡-android篇
- 【深度】揭穿QQ偷窥6亿用户隐私的三大阳谋
- oppo自带计算机版本,OPPO手机助手
- d3d示例程序_3D打印改变我们现实的10个示例
- GB28181设备端PS流封装和发送
- JS复制文本到粘贴板,前端H5移动端点击按钮复制文本到粘贴板。
热门文章
- 卓越精算-消息服务器,卓越精算t3服务器设置
- 桂林电子科技大学计算机评估,【图片】2016年第四次教育部学科评估结果【桂林电子科技大学吧】_百度贴吧...
- [教程]HTC G13 S-ON解锁至S-OFF简易方法
- UGUI制作与运用美术字体
- mysql视频下载_Mysql基础+进阶完整版视频教程下载
- 一起了解Windows——win10开启服务器管理器的图文操作步骤
- mysql性能监控指标_mysql性能监控指标
- springboot校园交友网站1.0(Springboot+Mybatis+thymeleaf+人脸识别+语音助手+百度地图)
- GEE数据集——MOD13Q1.061 大地植被指数 16天 全球250m
- 自学Springcloud,超详细笔记