code: public void publish(Event event, String destinationName, EventServiceBindingDescriptor eventServiceBindingDescriptor) throws CougarException {
          try {
              EventPublisherRunnable publisherRunnable = new EventPublisherRunnable(event, destinationName, eventServiceBindingDescriptor);
              threadPool.execute(publisherRunnable); // Publish the event using a thread from the pool
              publisherRunnable.lock();
  
              if (!publisherRunnable.isSuccess()) { // If publication failed for any reason pass out the exception thrown
                  Exception e = publisherRunnable.getError();
                  LOGGER.error("Publication exception:", e);
                  throw new CougarFrameworkException("Sonic JMS publication exception", e);
              }
          } catch (InterruptedException ex) { // Interrupted while waiting for event to be published
              LOGGER.error("Publication exception:", ex);
              throw new CougarFrameworkException("Sonic JMS publication exception", ex);
          }
      }
docs: Publish the supplied event to the destination.
  The event will be published using a thread from the pool and its associated jms session
  
  @param event
  @throws com.betfair.cougar.core.api.exception.CougarException
  @see com.betfair.cougar.transport.api.protocol.events.jms.JMSDestinationResolver