以下のように2つの頂点があります
最初の項目は、アドレステストをリッスンしてメッセージに返信するだけです
public class FirstVerticle extends AbstractVerticle {
@Override
public void start() {
Logger logger = LogManager.getLogger(FirstVerticle.class);
vertx.eventBus().consumer("test",message->{
logger.info("message received " + message.headers());
message.reply("hi!!!!");
});
}
}
2 番目のバーティクルは、アドレスtestにメッセージを送信するだけです
public class SecondVerticle extends AbstractVerticle {
@Override
public void start() throws Exception {
Logger logger = LogManager.getLogger(SecondVerticle.class);
vertx.eventBus().request("test","hey there",handler->{
if(handler.failed())
logger.error("Failed to get data"+handler.cause());
else
logger.info("response " + handler.result().headers());
});
}
}
2 つの頂点は、共通のメイン クラスを使用してデプロイされます。
Vertx.clusteredVertx(new VertxOptions().setHAEnabled(true), vertx ->
vertx.result().deployVerticle(verticleName, new DeploymentOptions().setHa(true))
);
別のプログラムとして実行し、バーティクルを異なる JVM にデプロイする場合、バーティクルはイベント バスを使用して相互に通信できますが、共通クラスを使用して一度に 2 つのバーティクルをデプロイすると、以下のエラーが発生します。
Failed to get data(TIMEOUT,-1) Timed out after waiting 30000(ms) for a reply. address:
__vertx.reply.9da86cc6-f689-47d5-a5b4-bceafbce254a, repliedAddress: test
どんな助けでも大歓迎です。前もって感謝します。