Monday, 15 September 2014

Guava eventBus is reporting "missing event handler" on unregister -



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