[Messenger][AmqpExt] Allow disabling the auto-setup of the connection
This commit is contained in:
parent
507989db87
commit
b3039faa1a
@ -94,7 +94,7 @@ class Connection
|
|||||||
*/
|
*/
|
||||||
public function publish(string $body, array $headers = array()): void
|
public function publish(string $body, array $headers = array()): void
|
||||||
{
|
{
|
||||||
if ($this->debug) {
|
if ($this->debug && $this->shouldSetup()) {
|
||||||
$this->setup();
|
$this->setup();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -108,7 +108,7 @@ class Connection
|
|||||||
*/
|
*/
|
||||||
public function get(): ?\AMQPEnvelope
|
public function get(): ?\AMQPEnvelope
|
||||||
{
|
{
|
||||||
if ($this->debug) {
|
if ($this->debug && $this->shouldSetup()) {
|
||||||
$this->setup();
|
$this->setup();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,7 +117,7 @@ class Connection
|
|||||||
return $message;
|
return $message;
|
||||||
}
|
}
|
||||||
} catch (\AMQPQueueException $e) {
|
} catch (\AMQPQueueException $e) {
|
||||||
if (404 === $e->getCode()) {
|
if (404 === $e->getCode() && $this->shouldSetup()) {
|
||||||
// If we get a 404 for the queue, it means we need to setup the exchange & queue.
|
// If we get a 404 for the queue, it means we need to setup the exchange & queue.
|
||||||
$this->setup();
|
$this->setup();
|
||||||
|
|
||||||
@ -215,4 +215,9 @@ class Connection
|
|||||||
$this->amqpQueue = null;
|
$this->amqpQueue = null;
|
||||||
$this->amqpExchange = null;
|
$this->amqpExchange = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function shouldSetup(): bool
|
||||||
|
{
|
||||||
|
return !array_key_exists('auto-setup', $this->connectionCredentials) || 'false' !== $this->connectionCredentials['auto-setup'];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -147,6 +147,42 @@ class ConnectionTest extends TestCase
|
|||||||
$connection = Connection::fromDsn('amqp://localhost/%2f/messages?persistent=true', array(), false, $factory);
|
$connection = Connection::fromDsn('amqp://localhost/%2f/messages?persistent=true', array(), false, $factory);
|
||||||
$connection->publish('body');
|
$connection->publish('body');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testItSetupsTheConnectionWhenDebug()
|
||||||
|
{
|
||||||
|
$factory = new TestAmqpFactory(
|
||||||
|
$amqpConnection = $this->getMockBuilder(\AMQPConnection::class)->disableOriginalConstructor()->getMock(),
|
||||||
|
$amqpChannel = $this->getMockBuilder(\AMQPChannel::class)->disableOriginalConstructor()->getMock(),
|
||||||
|
$amqpQueue = $this->getMockBuilder(\AMQPQueue::class)->disableOriginalConstructor()->getMock(),
|
||||||
|
$amqpExchange = $this->getMockBuilder(\AMQPExchange::class)->disableOriginalConstructor()->getMock()
|
||||||
|
);
|
||||||
|
|
||||||
|
$amqpExchange->method('getName')->willReturn('exchange_name');
|
||||||
|
$amqpExchange->expects($this->once())->method('declareExchange');
|
||||||
|
$amqpQueue->expects($this->once())->method('declareQueue');
|
||||||
|
$amqpQueue->expects($this->once())->method('bind')->with('exchange_name', 'my_key');
|
||||||
|
|
||||||
|
$connection = Connection::fromDsn('amqp://localhost/%2f/messages?queue[routing_key]=my_key', array(), true, $factory);
|
||||||
|
$connection->publish('body');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testItCanDisableTheSetup()
|
||||||
|
{
|
||||||
|
$factory = new TestAmqpFactory(
|
||||||
|
$amqpConnection = $this->getMockBuilder(\AMQPConnection::class)->disableOriginalConstructor()->getMock(),
|
||||||
|
$amqpChannel = $this->getMockBuilder(\AMQPChannel::class)->disableOriginalConstructor()->getMock(),
|
||||||
|
$amqpQueue = $this->getMockBuilder(\AMQPQueue::class)->disableOriginalConstructor()->getMock(),
|
||||||
|
$amqpExchange = $this->getMockBuilder(\AMQPExchange::class)->disableOriginalConstructor()->getMock()
|
||||||
|
);
|
||||||
|
|
||||||
|
$amqpExchange->method('getName')->willReturn('exchange_name');
|
||||||
|
$amqpExchange->expects($this->never())->method('declareExchange');
|
||||||
|
$amqpQueue->expects($this->never())->method('declareQueue');
|
||||||
|
$amqpQueue->expects($this->never())->method('bind');
|
||||||
|
|
||||||
|
$connection = Connection::fromDsn('amqp://localhost/%2f/messages?queue[routing_key]=my_key', array('auto-setup' => 'false'), true, $factory);
|
||||||
|
$connection->publish('body');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class TestAmqpFactory extends AmqpFactory
|
class TestAmqpFactory extends AmqpFactory
|
||||||
|
Reference in New Issue
Block a user