Reactor-Guice 是一个基于 Reactor 的 Guice 框架,集成了 Google Guice 和 Reactor-netty 框架。
通过 Maven 引入后,简单的代码就可以启动你的 http 和 websocket 服务
并搭建你的微服务
https://github.com/koocyton/reactor-guice-example 是一个实例
Reactor-Guice 聚焦于以下功能
1. 通过 JAX-RS 注解注入来完成 Route 配置
2. 通过 @Products 来指定返回的类型
3. 通过继承 AbstractWebSocketServerHandle 获得 Websocket 服务路径
4. 实现 KReactorFilter 对访问路径过滤
以下是含 数据库 和 Redis 功能的配置
Injector injector = Guice.createInjector( // application Properties binder -> Names.bindProperties(binder, properties), // mybatis new MyBatisModule() { @Override protected void initialize() { install(JdbcHelper.MySQL); bindDataSourceProviderType(HikariDataSourceProvider.class); bindTransactionFactoryType(JdbcTransactionFactory.class); addMapperClasses("com.doopp.gauss.app.dao.mapper"); addInterceptorClass(PageInterceptor.class); } }, // redis new RedisModule(), // application new ApplicationModule() );
KReactorServer.create() .bind(host, port) .injector(injector) .handlePackages("com.doopp.gauss.app.handle.v1") .addFilter("/", AppFilter.class) .launch();
Reactor-guice 是一个基于 Google Guice 和 Reactor-netty 的 反应式微服务框架 设计为大家喜欢的通过注解来配置路由,性能基于反应式框架的特点,非常的高效。 对于 web 开发常见的 Json, Protobuf, 表单,文件上传,websocket ,都是轻松支持 0.0.3 注册注解 @GET @POST @PUT @DELETE @Products @P
简介 上篇文章我们简单的介绍了Reactor的发展史和基本的Flux和Mono的使用,本文将会进一步挖掘Reactor的高级用法,一起来看看吧。 自定义Subscriber 之前的文章我们提到了4个Flux的subscribe的方法: Disposable subscribe(); Disposable subscribe(Consumer<? super T> consumer); Di
by 张亮 前面讲到,整个libevent本身就是一个Reactor,因此本节将专门对Reactor模式进行必要的介绍,并列出libevnet中的几个重要组件和Reactor的对应关系,在后面的章节中可能还会提到本节介绍的基本概念。 1 Reactor的事件处理机制 首先来回想一下普通函数调用的机制:程序调用某函数?函数执行,程序等待?函数将结果和控制权返回给程序?程序继续处理。 Reactor释
What is Reactor Reactor是JVM的完全无阻塞的响应式编程基础,具有高效的需求管理。它直接与Java 8功能的API,特别是整合CompletableFuture,Stream和 Duration。它提供可组合的异步序列API Flux(用于[N]元素)和 Mono(用于[0 | 1]元素),广泛实现[Reactive Streams](https://www.reactive
一、Reactor模式是什么 反应器设计模式(Reactor pattern)是一种为处理并发服务请求,并将请求提交到一个或 者多个服务处理程序的事件设计模式。当客户端请求抵达后,服务处理程序使用多路分配策略,由一个非阻塞的线程来接收所有的请求,然后派发这些请求至相关的工作线程进行处理。 二、什么场景下使用Reactor模式? 对于高并发系统,常会使用Reactor模式,其代替了常用的多线
源码可以到http://www.aoc.nrao.edu/php/tjuerges/ALMA/ACE-5.5.2/html/ace/上去找 虽然ACE_Select_Reactor是灵活的,但是由于只有拥有者才能调用它的handle_events方法,所以在多线程应用程序中它还是有一定的局限性的,因而ACE_Select_Reactor得事件多路分离层的序列化处理可能对某些场景来讲约束太多了。一种
在ACE_Select_Reactor_T的handle_events中,进去就会获取Token,调到ACE_Guard直至ACE_Token的share_acquire函数,会调用一个sleepHook,这个hook的代码是: 00058 // Used to wakeup the reactor. 00059 00060 template <class ACE_TOKEN_TYPE> voi
之前提到Vert.x API是事件驱动 - 当他们都可用时,Vert.x传递事件给处理程序。 在大多数情况下Vertx要求使用一种称为event loop线程的处理程序。 如无有 Vert.x 或您的应用程序块中,event loop可以欢快地运行将事件传递给不同的处理程序提供事件陆续到达。 因为没有阻塞,event loop可以在短时间内提供大量的事件。例如一个单一的event loop可以非常
Reactor 是一个基于 JVM 之上的异步应用基础库。为 Java 、Groovy 和其他 JVM 语言提供了构建基于事件和数据驱动应用的抽象库。Reactor 性能相当高,在最新的硬件平台上,使用无堵塞分发器每秒钟可处理 1500 万事件。 开源中国组织翻译的 Reactor 中文文档:http://projectreactor.mydoc.io 示例代码: // This helper m
Channels Defines only SendQueueCapacity. #1503 Implements rate-limiting by enforcing minimal time between two consecutive pexRequestMessage requests. If the peer sends us addresses we did not ask, it
Channels See this issue Mempool maintains a cache of the last 10000 transactions to prevent replaying old transactions (plus transactions coming from other validators, who are continually exchanging t
Channels #1503 Sending invalid evidence will result in stopping the peer. Sending incorrectly encoded data or data exceeding maxMsgSize will result in stopping the peer.
Consensus Reactor defines a reactor for the consensus service. It contains the ConsensusState service that manages the state of the Tendermint consensus internal state machine. When Consensus Reactor