1
Vert.x是否對部署的Verticle有任何開銷?在沒有必要的情況下解除他們的任何理由嗎?不需要的Verticle開銷並取消部署
請看MyVerticle
- 它的唯一目的是在應用程序啓動時執行load
,在加載此verticle後不需要。 撥打consumer.unregister()
是否足夠?是否有任何理由取消部署MyVerticle
?
public class MyVerticle extends AbstractVerticle {
private MessageConsummer consumer;
@Override
public void start() {
consumer = vertx.eventBus().consumer(AppConstants.SOME_ADDRESS, this::load);
}
@Override
public void load(Message message) {
LocalMap<Short, String> map = vertx.sharedData().getLocalMap(AppConstants.MAP_NAME);
try (
DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(AppConstants.INDEX_PATH)))
) {
while (true) {
map.put(
in.readShort(),
in.readUTF()
);
}
} catch(EOFException eof) {
message.reply(AppConstants.SUCCESS);
} catch (IOException ioe) {
message.fail(100, "Fail to load index in memory");
throw new RuntimeException("There are no recovery policy", ioe);
} finally {
//is this sufficient or I need to undeploy them programmatically?
consumer.unregister();
}
}
}
謝謝你的回答!是的,我會用'-ha'選項部署我的Verticle。所以我\你的建議是解除他們,對吧? –
是的。這個想法是,即使Verticle沒有做什麼,但由於某種原因JVM崩潰了,「HA」沒有狀態的概念,並且將會在集羣某個地方重新部署之前部署的Verticle,而您不需要這樣做。 –