【发布时间】:2014-01-19 07:36:33
【问题描述】:
我想使用类似的 Reactor:
reactor.notify(new CreatedEvent<A>(a));
reactor.notify(new CreatedEvent<B>(b));
我的活动在哪里:
public class CreatedEvent<E> extends Event<E> {
public CreatedEvent(E data) {
super(data);
}
}
然后像这样消费那些事件:
reactor.on(new Consumer<CreatedEvent<A>>() {
@Override
public void accept(CreatedEvent<A> t) {
/* do something with a */
}
});
reactor.on(new Consumer<CreatedEvent<B>>() {
@Override
public void accept(CreatedEvent<B> t) {
/* do something with b */
}
});
但我收到了两个消费者的两个事件。
如果我使用选择器,它会起作用,即:
reactor.notify("created.a", Event.wrap(a));
reactor.on(Selectors.$("created.a"), new Consumer<Event<A>>() {
@Override
public void accept(Event<A> t) {
/* do something with a */
}
});
但是使用选择器我将不得不编写和维护非常多的字符串。
都是关于使用选择器的吗?或者我可以以某种方式“按参数化类类型选择”?
【问题讨论】:
标签: spring events consumer reactor