code: public boolean sendInternalMessage(String worker, final String messageId, String eventName,
              final String eventMessage, boolean checkAvailableThreads) throws JMSException {
          // Spring Injection
          if (mdwMessageProducer != null) {
              mdwMessageProducer.sendMessage(eventMessage, messageId);
  
          }
          else {
              InternalEventDriver command = new InternalEventDriver(messageId, eventMessage);
              ThreadPoolProvider thread_pool = ApplicationContext.getThreadPoolProvider();
              if (checkAvailableThreads && !thread_pool.execute(worker, eventName, command)) {
                  String msg = worker + " has no thread available for event: " + eventName
                          + " message:\n" + eventMessage;
                  // make this stand out
                  logger.warnException(msg, new Exception(msg));
                  logger.info(thread_pool.currentStatus());
                  return false;
              }
              else if (!checkAvailableThreads)
                  thread_pool.execute(worker, eventName, command);
  
          }
          return true;
      }
docs: <p>
  Uses the injected mdwMessageProducer to send the message or defaults
  back to InternalEventDriver
  </p>
  @param worker
  @param messageId
  @param eventName
  @param eventMessage
  @param checkAvailableThreads
  @throws JMSException