2016-10-27 2 views
1

Есть ли у 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(); 
     } 
    } 
} 

ответ

2

Verticles можно рассматривать как приложения, работающие на Vert.x, внедряющие/отмены развертывания имеет только небольшие накладные расходы, если, например, вы делаете high availability or failover. В этом случае Vert.x должен будет отслеживать развернутые экземпляры, отслеживать сбои и повторять пороги на других узлах и т. Д.

Undeploy также позволит вам выполнить любую очистку (хотя вы не используя его в вашем примере), вызвав метод stop().

Если вы не работаете с HA, то undeploy позволит вам восстановить любую память, выделенную вашей Verticle, но больше не ссылается (плюс память, связанная с сохранением внутренней дорожки развертывания, которая должна быть неграмотной как ссылка на один объект).

+0

Благодарим вас за ответ !!! Да, я собираюсь развернуть свои вертикулы с опцией -ha. Итак, ваше предложение состоит в том, чтобы развернуть их, не так ли? –

+0

Да. Идея состоит в том, что даже если вертикаль ничего не делает, но по какой-то причине JVM разбился, 'HA' не имеет понятия о состоянии и повторно развернет ранее развернутую вершину где-то в кластере, пока вы этого не хотите. –

Смежные вопросы