docs: public void onReceive(Object message) {
  
          // Start all workers
          if (message instanceof RequestToBatchSenderAsstManager) {
  
              // clear responseMap
  
              RequestToBatchSenderAsstManager request = (RequestToBatchSenderAsstManager) message;
              originalManager = getSender();
              taskId = request.getTaskId();
              asstManagerRetryIntervalMillis = request
                      .getAsstManagerRetryIntervalMillis();
              // assumption: at least 12
              taskIdTrim = taskId.length() <= 12 ? taskId
                      : taskId.substring(taskId.length() - 12,
                              taskId.length());
              workers = request.getWorkers();
              maxConcurrencyAdjusted = request.getMaxConcurrency();
  
              requestTotalCount = workers.size();
  
              sendMessageUntilStopCount(maxConcurrencyAdjusted);
  
              // if not completed; will schedule a continue send msg
              if (processedWorkerCount < requestTotalCount) {
  
                  waitAndRetry();
                  return;
              } else {
                  logger.info("Now finished sending all needed messages. Done job of ASST Manager at "
                          + PcDateUtils.getNowDateTimeStrStandard());
                  return;
              }
          } else if (message instanceof ContinueToSendToBatchSenderAsstManager) {
  
              // now reaching the end; have processed all of them, just waiting
              // the response to come back
              int notProcessedNodeCount = requestTotalCount
                      - processedWorkerCount;
              if (notProcessedNodeCount <= 0) {
                  logger.info("!Finished sending all msg in ASST MANAGER at "
                          + PcDateUtils.getNowDateTimeStrStandard()
  
                          + " STOP doing wait and retry.");
                  return;
              }
  
              int extraSendCount = maxConcurrencyAdjusted
                      - (processedWorkerCount - responseCount);
  
              if (extraSendCount > 0) {
                  logger.info("HAVE ROOM to send extra of : " + extraSendCount
                          + " MSG. now Send at "
                          + PcDateUtils.getNowDateTimeStrStandard());
  
                  sendMessageUntilStopCount(processedWorkerCount + extraSendCount);
                  waitAndRetry();
              } else {
                  logger.info("NO ROOM to send extra. Windowns is full. extraSendCount is negative: "
                          + extraSendCount
                          + " reschedule now at "
                          + PcDateUtils.getNowDateTimeStrStandard());
                  waitAndRetry();
  
              }
          } else if (message instanceof ResponseCountToBatchSenderAsstManager) {
  
              responseCount = ((ResponseCountToBatchSenderAsstManager) message)
                      .getResponseCount();
  
              logger.debug("RECV IN batchSenderAsstManager FROM ExecutionManager responseCount: "
                      + responseCount);
  
          }
      }