Шина событий доступа к вершине вне класса вершины

Я играю с шиной событий vert.x, и в самых простых примерах все работает нормально.

Однако я хотел бы отправлять сообщения на шину событий 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;
}

person Drejc    schedule 04.02.2015    source источник


Ответы (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";
    }
}
person Drejc    schedule 05.02.2015
comment
этот ответ единственный, который вы придумали? не могли бы вы найти какое-то другое решение? потому что я не хочу добавлять еще одну зависимость только по этой причине. - person mohamnag; 01.04.2015