-
Notifications
You must be signed in to change notification settings - Fork 193
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
event插件如何让用户关注某主题 #53
Comments
另外 同一个类型的 监听 允许定义多个 ?
|
用户需要自行实现 EventListener 接口,并通过 subscribeTopic() 方法,返回自己关注的主题。EventBus 会在该主题被发布时主动去调用监听类的 onEvent(Event e) 方法。 目前一个事件的处理类只能处理单一类型的事件,为降低代码的耦合性也建议一个类只处理一种事件。 |
@qinerg 你的意思是在EventListener里维护所有的订阅者么 |
EventListener负责消费事件,EventBus里维护所有主题的订阅者,当事件发生后,EventBus负责将消息推送至每一个订阅了此主题的EventListener消费者。 /**
* 注册成功后,给用户增加积分
*/
@IocBean
public class AddCreditsListener implements EventListener {
@Inject
private CreditsService creditsService;
@Override
public String subscribeTopic() {
return "reg-user";
}
@Async
@Override
public void onEvent(Event e) {
NutMap user = (NutMap) e.getParam();
Long uid = user.getLong("id");
creditsService.addCredits(uid, 100); // 给用户增加100个金豆
}
}`
`/**
* 日志跟踪消费者
*/
@IocBean
public class LogEventListener implements EventListener {
private Log log = Logs.get();
@Override
public String subscribeTopic() {
return "reg-user";
}
@Override
public void onEvent(Event e) {
log.debugf("->new user event: %s", Json.toJson(e.getParam(), JsonFormat.compact()));
}
} 当注册事件触发时: |
@qinerg 你QQ 或微信是什么 我有问题请教下 |
我想改名叫eventbus |
还是没弄明白 整个流程 我加 下作者咨询下 |
这个方法负责把消息分发给所有订阅的用户么 ? |
好像明白点了 …… |
@Rekoe 有疑问的话,在 nutz.cn 上发贴问吧,你可以把你的所有疑惑说出来,我尽力解答。 |
@wendal 改名我无意见,呵呵 |
@qinerg
RT
The text was updated successfully, but these errors were encountered: