code: protected void start() throws JMSException {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(this, tc, "start");
  
          // We call start regardless of whether this is synchronous or async
          if (coreConsumerSession != null) {
              try {
  
                  synchronized (closedLock) {
                      if (!closed) {
                          // Do not deliver message immediately on start.
                          coreConsumerSession.start(false);
                      }
                      else {
                          // This condition could be caused by tight looping closing of consumers at
                          // the same time as calling connection.start. This is a less intrusive solution
                          // than adding the locking that would otherwise be required.
                          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                              SibTr.debug(this, tc, "Avoided starting a consumer that has been closed.");
                      }
                  }
  
              } catch (SIException sice) {
                  // No FFDC code needed
                  // d222942 review. Default message ok.
                  // This exception will be propogated back up to the Session, which will
                  // cache the first exception thrown. Once all the consumers have been
                  // started (or stopped) the first caught exception is then propogated
                  // to the Connection for delivery to the application.
                  // d238447 FFDC Review. Either external or already FFDCd, so don't FFDC here.
                  throw (JMSException) JmsErrorUtils.newThrowable(JMSException.class,
                                                                  "EXCEPTION_RECEIVED_CWSIA0085",
                                                                  new Object[] { sice, "JmsMsgConsumerImpl.start" },
                                                                  sice,
                                                                  null, // null probeId = no FFDC
                                                                  this,
                                                                  tc);
              }
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(this, tc, "start");
      }
docs: Method start.