/**
  * {@inheritDoc}
  */
 public function declareExchange(ExchangeDefinition $exchange)
 {
     try {
         $this->getChannel()->exchange_declare($exchange->getName(), $exchange->getType(), false, $exchange->isDurable(), $exchange->isAutoDeleted(), $exchange->isInternal());
     } catch (\Exception $e) {
         throw new DriverException('Exchange declare error', $e);
     }
 }
 /**
  * {@inheritDoc}
  */
 public function declareExchange(ExchangeDefinition $exchange)
 {
     static $typeMap = [ExchangeType::DIRECT => AMQP_EX_TYPE_DIRECT, ExchangeType::TOPIC => AMQP_EX_TYPE_TOPIC, ExchangeType::FANOUT => AMQP_EX_TYPE_FANOUT, ExchangeType::HEADERS => AMQP_EX_TYPE_HEADERS];
     $exchangeObject = $this->getExchange($exchange->getName());
     $exchangeObject->setType($typeMap[$exchange->getType()]);
     $flags = AMQP_DURABLE * $exchange->isDurable() | AMQP_AUTODELETE * $exchange->isAutoDeleted() | AMQP_INTERNAL * $exchange->isInternal();
     $exchangeObject->setFlags($flags);
     $exchangeObject->declareExchange();
 }