@Override
 public boolean runCmd(String[] args) throws Exception {
   if (args.length < 4) {
     return false;
   }
   long lastConsumedId = 0;
   SubscriptionData subData =
       admin.getSubscription(ByteString.copyFromUtf8(args[1]), ByteString.copyFromUtf8(args[2]));
   if (null == subData) {
     System.err.println(
         "Failed to read subscription for topic: " + args[1] + " subscriber: " + args[2]);
     return true;
   }
   lastConsumedId = subData.getState().getMsgId().getLocalComponent();
   long numMessagesToConsume = Long.parseLong(args[3]);
   long idToConsumed = lastConsumedId + numMessagesToConsume;
   System.out.println(
       "Try to move subscriber("
           + args[2]
           + ") consume ptr of topic("
           + args[1]
           + ") from "
           + lastConsumedId
           + " to "
           + idToConsumed);
   MessageSeqId consumeId = MessageSeqId.newBuilder().setLocalComponent(idToConsumed).build();
   ByteString topic = ByteString.copyFromUtf8(args[1]);
   ByteString subId = ByteString.copyFromUtf8(args[2]);
   try {
     subscriber.consume(topic, subId, consumeId);
   } catch (Exception e) {
     System.err.println("CONSUME FAILED");
   }
   return true;
 }
 @Override
 public boolean runCmd(String[] args) throws Exception {
   if (args.length < 4) {
     return false;
   }
   ByteString topic = ByteString.copyFromUtf8(args[1]);
   ByteString subId = ByteString.copyFromUtf8(args[2]);
   long msgId = Long.parseLong(args[3]);
   MessageSeqId consumeId = MessageSeqId.newBuilder().setLocalComponent(msgId).build();
   try {
     subscriber.consume(topic, subId, consumeId);
   } catch (Exception e) {
     System.err.println("CONSUMETO FAILED");
   }
   return true;
 }