1、内置的路由器
目前事件路由器,分为:默认路由器(基于 hash 实现,速度快);模式匹配路由器。
路由器 | 主题示例 | 描述 |
EventRouterDefault | demo.hello , | 基于 hash 的路由器(性能好) |
EventRouterPatterned | demo.hello.a , demo.hello.* | 基于模式匹配的路由器(可支持不同模式) |
2、关于默认路由器(EventRouterDefault)
发送主题 | 监听主题 | 备注 |
event.user.created | event.user.created | 支持 ApiBean 的模式调用 |
3、关于模式匹配路由器(EventRouterPatterned)
支持路由定制,已实现的有:RoutingPath,路径风格的路由;RoutingTag,标签风格的路由。还可以自己定制
- RoutingPath(
*
代表一段,**
代表不限断)
发送主题 | 监听主题 | 备注 |
event/user/created | event/*/created | |
event/order/created | event/*/created | |
- RoutingTag(
:
为主题与标签的间隔符,,
为主题的间隔符)
发送主题 | 监听主题 | 监听Tag | 是否监听到 |
event.user.update | event.user.update | 不限 | 是 |
event.user.update:id | event.user.update | 不限 | 是 |
event.user.update | event.user.update:id | 不限 | 是 |
event.user.update:id | event.user.update:id | id | 是 |
event.user.update:id,name | event.user.update:name | name | 是 |
event.user.update:id | event.user.update:name | name | 否 |
4、配置应用示例
//对全局的 `Dami.bus()` 起效
DamiConfig.configure(new EventRouterPatterned(RoutingTag::new));
//监听事件
Dami.bus().listen("demo.hello:a,b", (event) -> {
System.err.println(event.getPayload());
});
//发送事件
Dami.bus().send("demo.hello", "world");
//对当前实例有效
DamiBus bus = new DamiBusImpl(new EventRouterPatterned(RoutingTag::new));
//监听事件
bus.listen("demo.hello:a,b", (event) -> {
System.err.println(event.getPayload());
});
//发送事件
bus.send("demo.hello", "world");