2

私は vert.x イベント バスをいじっていますが、最も単純な例ではすべて正常に動作しています。

ただし、Verticle クラス外の vert.x イベント バスにメッセージを送信したいと考えています。

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;
}
4

1 に答える 1

2

わかりました、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";
    }
}
于 2015-02-05T08:03:51.637 に答える