# eventbus-util

## 源起
我过去几年一直是Vert.X的重度使用者。最近尝试在Rust上构建程序，但是github的几个相关项目都不太理想。
我的观点如下：
- 相关的开发者认同Netty和Vert.X的思想，大都力图根据这思想来重新构造一套框架。在我看来，
  - 对于其中最关键的任务调度问题，实际上Tokio已经提供了相似且足够可用的解决方案；
  - 而不同的部分，恰恰与Rust/LLVM和Java/JVM各自实现特性的不同相关。用Rust结构去完整实现Netty或Vertx.X框架，反而无法清晰体现其设计思路。
  - 框架的成熟度也会影响框架的应用。
- 力图从框架角度来实现EventBus Bridge，目标看起来是为使用者提供方便。但会用到EventBus本身并不会是一个单独使用的场景。如果项目提供的框架没法为除EventBus以外的部分提供一揽子的解决方案，那怎么把EventBus嵌入到整个系统中间去，反而是一个问题。
- 对于EventBus这一类应用协议，tokio-util提供了一个codec框架及有用的工具实例。这个框架与Netty及很多其它框架提供的流水线处理结构的思想并不相同。我甚至在Tokio/Rust下没有找到较为通用AsyncStream的流水线处理模式。

## 项目目的
- 提供一组适合配合Tokio相关框架使用的EventBus工具，便于Tokio框架/应用在不影响原有架构的基础上直接构建连接Vert.X、消费EventBus消息的功能。
- 提供一种模式，将Tokio原有的codec架构扩展为一个栈式 / pipeline工作模式的codec框架。
- 同时提供一个实现的例子。
上述实现都是工具式、非侵入式的，可以很容易的匹配到现有的Tokio相关项目中，不会对项目架构产生影响。

## 特别说明
本人主要是Java/Kotlin程序员，可能在Rust方面的思路不够开阔。如有意见、问题，请不吝赐教。