2015-02-04 3 views
1

Я играю с шиной событий vert.x, и все работает отлично в простейшем из примеров.vertx access event bus вне класса verticle

Однако я бы хотел отправить сообщения на шину событий vert.x вне класса Verticle.

Как получить доступ к шине событий извне класса Verticle?
Может ли Guice использоваться для обеспечения автобуса событий?

Например:

public class A { 

    public void executeAndSendMessage() { 

     ... some logic ... 
     eventBus.send("address", "finished job"); 
    } 
} 

Теперь я могу предоставить саму шину событий в конструкторе этого класса и сохранить ссылку на него. Но это кажется немного громоздким:

private final EventBus eventBus; 

public A(EventBus bus) { 
    eventBus = bus; 
} 

ответ

1

Хорошо мне удалось использовать Guice инъекции и вводят шину событий с провайдером с помощью: https://github.com/larrytin/vertx-mod-guice

public class TestModule implements VertxModule { 

    ... 

    @Provides 
    public EventBus getEventBus() { 
     return vertx.eventBus(); 
    } 
} 


public class A() { 

    @Inject 
    Provider<EventBus> eventBus; 

    @GET 
    @Path("/foo") 
    public String foo() { 

     eventBus.get().send("Test-Address", "HELLO"); 
     return "bar"; 
    } 
} 
+0

Просто к сведению: Вы можете принять свой собственный ответ. – Peter

+0

этот ответ единственный, с которым вы столкнулись? не могли бы вы найти какое-то другое решение? потому что я не хочу добавлять другую зависимость только по этой причине. – mohamnag

+0

Это работает для меня ... остальное зависит от вас ... – Drejc