- 浏览: 195205 次
- 性别:
- 来自: 上海
-
文章分类
最新评论
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("你好"));
}
}
大功告成,非常的简单
主要用于帮助开发者创建基于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("你好"));
}
}
大功告成,非常的简单
发表评论
-
spring boot
2017-11-22 14:12 0spring boot service mesh spring ... -
redis 客户端 jedis
2016-11-09 15:36 547 -
高效序列化工具kryo
2016-11-09 15:29 597 -
Jetty项目简介
2016-11-07 11:28 463jetty是一个开源、基于标准、全功能实现的Java服务器。它 ... -
Quartz 表达式
2016-08-26 15:13 395Quartz中时间表达式的设 ... -
org.apache.commons.dbutils
2016-08-26 11:20 379 -
org.quartz
2016-08-26 10:16 548 -
jedis
2016-08-24 18:08 491 -
待查看
2016-08-02 09:41 4181tair 2 tddl 3hsf 4 分库分表 pmd ... -
spring 线程池
2016-07-10 10:26 524一、初始化 1,直接调用 [java] view plai ... -
Notify、MetaQ、Kafka、ActiveMQ
2016-07-03 12:15 8031 Notify Notify是淘宝自主研发的一套消息服务引 ... -
mybatis 帮助文档
2016-04-22 11:01 536http://www.mybatis.org/mybatis- ... -
redis学习(java调用方式)
2016-04-07 17:56 498【redis数据结构 – 简介 ... -
spring mybatis
2016-03-25 15:43 552org.mybatis.spring.SqlSessionTe ... -
SonarQube代码质量管理平台安装与使用
2016-03-21 16:13 550代码质量管理工具 http://blog.csdn.net/h ... -
mybatis深入
2016-03-21 13:59 503-------Mybatis数据源与连 ... -
关于 mybatis 传参
2016-03-18 10:46 566基本数据类型:包含int,String,Date等。基本数据类 ... -
spring 加载配置文件 xml 和properties
2016-03-17 17:12 2950Spring配置文件是集成了Spring框架的项目的核心,引擎 ... -
cat监控
2016-03-16 15:22 514 -
durid 数据库连接池
2016-03-15 09:35 1046Druid是Java语言中最好的数据库连接池。Druid能够提 ...
相关推荐
IO(基于选择器)+ LMAX Disruptor 需要Java 1.8。 实施的想法: select()的专用线程-React堆模式,通过特殊的WaitStrategy实现为一个中断实例。 N个线程(即处理器)处理IO事件。 一个NIO通道的处理始终在一个...
此外,还可以尝试将其与其他并发框架如Reactor或Akka进行比较,以加深对并发编程的理解。 总而言之,tiny_disruptor项目为Java开发者提供了一个学习和实践Disruptor框架的绝佳平台。通过掌握这个简化版的实现,...
- 将MyBatis操作的数据先传递给Reactor,然后由Reactor包装并传递给Disruptor。Disruptor的低延迟和高吞吐能力有助于在内存中处理数据,然后再批量写入数据库或缓存。 - 这种模式下,业务逻辑无需直接处理资源锁...
WebFlux是Spring 5中引入的一个新的响应式框架,它使用Reactor作为底层的响应式库,支持非阻塞式编程模型,尤其适合于I/O密集型的应用场景。Spring 5的另一个亮点是全面支持函数式编程模型,提供了一种更简洁的编程...
我们将研究在使用 Spring Integration 的真实世界应用程序开发过程中面临的一些问题(和开发的解决方案), Spring 表达式语言、Reactor(和 LMAX Disruptor)每天处理数十亿个事件,并演示 JVM 可以(偶尔不安全地...
游戏执行者 采用React器模式,准备就绪,准备完成事件到更新服务UpdateService,通过处理后进行模型缓存,然后将消息转换为dispatchThread消息分配模型需要的创建,更新,完成的事件进行单线程循环调度。...
2. **分布式系统**:云基常常涉及到分布式系统的设计和实现,Java在这里有天然的优势,因为它有强大的网络通信库(如Apache HttpClient和Netty)和处理大规模并发的工具(如Akka和Disruptor)。Java的开源框架如...