1
当我试图注销处理程序时,从Guava事件总线中收到以下错误。Guava eventBus在注销时报告“丢失事件处理程序”
java.lang.IllegalArgumentException: missing event handler for an annotated method. Is [DerivedClass] registered?" at com.google.common.eventbus.EventBus.unregister(EventBus.java:227)
有一个相同的问题已经回答,但根本原因是客户端编码错误。 就我而言,我做的一切都很简单,但仍然遇到问题。
客户端代码是一个Apache Camel Processor bean,它运行多个线程(本例中只有2个)。尽管eventBus被设计为线程安全的,但错误仅在高流量时出现,并且在调用1000次之后才出现几次。
处理程序实例只是存储骆驼交易所,如果构造失败,我们会快速失败。
public void process(Exchange exchange) throws Exception {
MyHandler evHandler = new MyHandler(exchange);
eventBus.register(evHandler);
try {
doStuff(exchange);
}
catch (Foo bar) {
// stuff
}
finally {
eventBus.unregister(evHandler);
}
}