Guava eventBus is reporting "missing event handler" on unregister -
i'm getting next error guava eventbus when attempting unregister handler.
java.lang.illegalargumentexception: missing event handler annotated method. [derivedclass] registered?" @ com.google.common.eventbus.eventbus.unregister(eventbus.java:227)
there identical question answered, root cause client coding error. in case, i'm doing simply, , yet still running issue.
the client code apache camel processor bean, running multiple threads (only 2 in case). although eventbus designed thread-safe, error has surfaced @ time of high traffic, , has been raised few times after 1000s of invocations.
the handler instance stores camel exchange, , if construction failed, fail fast.
public void process(exchange exchange) throws exception { myhandler evhandler = new myhandler(exchange); eventbus.register(evhandler); seek { dostuff(exchange); } grab (foo bar) { // stuff } { eventbus.unregister(evhandler); } }
from reading eventbus
source code, seems guava 14 onwards sufficient locking avoid problem, whereas guava 13 , below not locking. can utilize newer version of guava?
(it's clear error message you're not on latest guava, guava 16 onwards calls handlers "subscribers" instead.)
guava event-bus
No comments:
Post a Comment