code: public function publish($message, $routingKey = null, $flags = AMQP_NOPARAM, array $attributes = [])
      {
          $hasEventDispatcher = null !== $this->eventDispatcher;
  
          if(!empty($this->routingKeyPrefix)){
              $routingKey = $this->routingKeyPrefix . $routingKey;
          }
  
          if (!$this->isInitialized()) {
              $this->initialize();
          }
  
          if (true === $hasEventDispatcher) {
              $event = new PublisherEvent(
                  $message,
                  $routingKey,
                  $flags,
                  $attributes,
                  $this->exchange
              );
          }
  
          try {
              if (true === $hasEventDispatcher) {
                  $this->eventDispatcher->dispatch(PublisherEvents::PRE_PUBLISH, $event);
  
                  $result = $this->exchange->getWrappedExchange()->publish(
                      $event->getMessage(),
                      $event->getRoutingKey(),
                      $event->getFlags(),
                      $event->getAttributes()
                  );
              } else {
                  $result = $this->exchange->getWrappedExchange()->publish(
                      $message,
                      $routingKey,
                      $flags,
                      $attributes
                  );
              }
  
              if (!$result) {
                  if (true === $hasEventDispatcher) {
                      $this->eventDispatcher->dispatch(PublisherEvents::FAIL_PUBLISH, new FailedPublisherEvent($event, null, $this));
                  }
              } else {
                  if (true === $hasEventDispatcher) {
                      $this->eventDispatcher->dispatch(PublisherEvents::SUCCESS_PUBLISH, new SuccessPublisherEvent($event));
                  }
              }
          } catch (\Exception $e) {
              if (true === $hasEventDispatcher) {
                  $this->eventDispatcher->dispatch(PublisherEvents::FAIL_PUBLISH, new FailedPublisherEvent($event, $e, $this));
              }
  
              throw $e;
          }
  
          return $result;
      }
docs: @param string $message
  @param null   $routingKeyArgument::type(Publisher::class)
  @param int    $flags
  @param array  $attributes
  
  @throws \Exception
  
  @return bool