Reactor、Disruptor

Reactor
主要用于帮助开发者创建基于JVM的异步应用程序。该框架提供了Java、Groovy等JVM语言的抽象,使得开发者构建事件/数据驱动的应用程序更加容易。

Reactor开发人员称,在适度的硬件配置环境中,通过非阻塞的Dispatcher,该框架每秒可以处理超过1500万事件。此外,Reactor还提供了一系列其他的调度程序供开发者选择,范围从线程池风格的长线任务执行,到非阻塞大批量的任务调度等。

Reactor除了受到同名的Reactor设计模式的影响外,还借鉴了其他事件驱动设计模式以及一些已开发多年的非常棒的JVM解决方案。Reactor的目标是,将这些想法和设计模式浓缩到一个简单、可重用的基础框架中,以使事件驱动编程更容易。

以下转自 http://www.hack6.com/html/bc/java/20140401/43395.html
最近工作中用到一个非常好用的框架spring reactor,可以帮助我们新开一个异步的线程来处理一些比如记录日志的功能,这样就能节约后台相应的时间,之前在网上也没有找到完全能用的列子,这里记录一下,方便以后用,配置也非常的简单:

1:引入jar包,这里使用的是maven,只需要引用一个jar包就行了

<dependency>
<groupid>org.projectreactor</groupid>
reactor-spring</artifactid>
<version>1.0.0.RELEASE</version>
</dependency>


2:写一个reactor的配置的bean

@Configuration
@EnableReactor
public class ReactorConfig {

@Bean(name = "rootReactor")
public Reactor rootReactor(Environment env) {
return Reactors.reactor().env(env).get();
}

@Bean(name = "reportReactor")
public Reactor reportReactor(Environment env) {
return Reactors.reactor().env(env).get();
}

}


3:事件的处理类,一般是以Hander结尾,方便区分:

@Component
public class IndexHandler {

@Autowired
@Qualifier("rootReactor")
private Reactor reactor;

@Selector(value = "hello", reactor = "@rootReactor")
public void handleTestTopic(Event<string> evt) throws Exception {
System.out.println("************");
}
}</string>


4:最后就是在controller或者service里面通知新开线程了:

@Controller
public class IndexController {

@Autowired
@Qualifier("rootReactor")
private Reactor r;

@RequestMapping("chen")
@Transactional
public void chen() {
r.notify("hello", Event.wrap("你好"));
}
}


大功告成,非常的简单
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值