Есть ли у Vert.x какие-либо накладные расходы для развернутых вершин? Есть ли какая-то причина для их развертывания после того, как они становятся ненужными?Ненужные вертикальные надстройки и незанятые
Pls посмотреть MyVerticle
- единственная цель - сделать load
при запуске приложения, после загрузки этой вершки не требуется. Достаточно ли позвонить 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. Итак, ваше предложение состоит в том, чтобы развернуть их, не так ли? –
Да. Идея состоит в том, что даже если вертикаль ничего не делает, но по какой-то причине JVM разбился, 'HA' не имеет понятия о состоянии и повторно развернет ранее развернутую вершину где-то в кластере, пока вы этого не хотите. –