executeJob = async (funcLogger, symbol, jobPayload) => {
  const logger = funcLogger.child({ helper: 'queue', func: 'executeJob' });

  // Preprocess before executeTrailingTrade
  if (jobPayload.preprocessFn) {
    // Return value of preprocessFn decides on calling of executeTrailingTrade
    const result = await jobPayload.preprocessFn();

    if (result === false) {
      logger.info({ symbol }, `Queue ${symbol} job done`);
      return false; // continue
    }

    logger.info({ symbol }, `Queue ${symbol} job preprocessed`);
  }

  // Execute the job
  if (jobPayload.processFn) {
    // processFn
    await jobPayload.processFn(
      funcLogger,
      symbol,
      _.get(jobPayload, 'correlationId')
    );
  }

  // Postprocess after executeTrailingTrade
  if (jobPayload.postprocessFn) {
    // postprocessFn
    await jobPayload.postprocessFn();

    logger.info({ symbol }, `Queue ${symbol} job postprocessed`);
  }

  return false; // continue
}
Execute the job in queue

@param {*} funcLogger
@param {*} symbol
@param {*} jobPayload