一个熟悉的场景
你刚接到一个需求:玩家登录后,系统需要做以下事情——
- 记录登录时间
- 发放离线奖励
- 发送欢迎邮件
- 推送今日活动信息
- 更新排行榜在线状态
你的第一反应可能是:上 Redis pub/sub 或 MQ。
但这意味着:安装 Redis/RabbitMQ 服务、维护连接池、处理消息序列化、配置消费者组、担心消息丢失……原本一个简单的"通知"需求,变成了一场中间件战争。
ionet 的答案是:不需要安装任何东西。
三个概念,全部学完
ionet 的分布式事件总线只有 3 个概念:
| 概念 | 说明 | 类比 |
|---|---|---|
| EventSource(事件源) | 业务数据载体 | MQ 中的消息体 |
| Subscriber(订阅者) | 接收事件并处理业务 | MQ 中的消费者 |
| Fire(发布事件) | 发送事件给订阅者 | MQ 中的 publish |
学完这三个概念,你就可以开始使用了。
实战:玩家登录事件
第一步:定义事件源
@ProtobufClass
public class UserLoginEventMessage {
public long userId;
public static UserLoginEventMessage of(long userId) {
var message = new UserLoginEventMessage();
message.userId = userId;
return message;
}
}
事件源需要添加 @ProtobufClass 注解,因为事件可能跨进程传输,需要序列化支持。
第二步:编写订阅者
@EventBusSubscriber
public class EmailEventBusSubscriber {
@EventSubscribe
public void {
log.info(, message.userId);
}
}
{
{
log.info(, message.userId);
}
}

