/** * @param string $name * @param string $type * @param int $flags * * @return \yii\amqp\client\Exchange */ private function declareExchangeAndCheckIt($name = null, $type = Client::EX_TYPE_DIRECT, $flags = Client::NOPARAM) { $channel = $this->client->newChannel(); $exchange = $this->client->newExchange($channel); $exchange->setName($this->getNameForEntity($name, $type)); $exchange->setType($type); $exchange->setFlags($flags); $this->assertNotNull($exchange); $this->assertTrue($exchange->declareExchange()); $this->assertEquals($type, $exchange->getType()); $this->assertEquals($flags, $exchange->getFlags()); return $exchange; }
/** * @inheritDoc */ public function init() { parent::init(); if (!$this->client) { throw new InvalidConfigException(\Yii::t('yii', 'AMQP client should be specified')); } if ($this->name) { $this->queueName = $this->queueName ?: $this->name; $this->exchangeName = $this->exchangeName ?: $this->name; } if (!$this->exchangeName) { throw new InvalidConfigException(\Yii::t('yii', 'Exchange name should be specified')); } if (!$this->queueName) { throw new InvalidConfigException(\Yii::t('yii', 'Queue name should be specified')); } if (!$this->client->isConnected()) { $this->client->connect(); } $this->channel = $this->client->newChannel(); $this->exchange = $this->client->newExchange($this->channel, $this->messageType); $this->queue = $this->client->newQueue($this->channel, $this->messageType); $this->exchange->setName($this->exchangeName); $this->exchange->setFlags($this->exchangeFlags); $this->exchange->setType($this->exchangeType); $this->exchange->declareExchange(); $this->queue->setName($this->queueName); $this->queue->setFlags($this->queueFlags); $this->queue->declareQueue(); $this->queue->bind($this->exchange, $this->routingKey, $this->queueBindArguments); }