From c49bfaf36689c040d1c2ef86ae1c132e755190e2 Mon Sep 17 00:00:00 2001 From: danielkorytek Date: Sun, 1 Dec 2019 11:29:31 +0100 Subject: [PATCH 1/4] Add AMQP exchange binding to another exchange --- .../Messenger/Transport/AmqpExt/Connection.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/Symfony/Component/Messenger/Transport/AmqpExt/Connection.php b/src/Symfony/Component/Messenger/Transport/AmqpExt/Connection.php index 2540b9d770d0..0df1dd9f4faa 100644 --- a/src/Symfony/Component/Messenger/Transport/AmqpExt/Connection.php +++ b/src/Symfony/Component/Messenger/Transport/AmqpExt/Connection.php @@ -94,6 +94,9 @@ public function __construct(array $connectionOptions, array $exchangeOptions, ar * * type: Type of exchange (Default: fanout) * * default_publish_routing_key: Routing key to use when publishing, if none is specified on the message * * flags: Exchange flags (Default: AMQP_DURABLE) + * * bindings[name]: An array of exchanges to bind, keyed by the name + * * binding_keys: The binding keys (if any) to bind to this exchange + * * binding_arguments: Arguments to be used while binding the exchange * * arguments: Extra arguments * * delay: * * queue_name_pattern: Pattern to use to create the queues (Default: "delay_%exchange_name%_%routing_key%_%delay%") @@ -423,6 +426,16 @@ public function exchange(): \AMQPExchange $this->amqpExchange->setType($this->exchangeOptions['type'] ?? AMQP_EX_TYPE_FANOUT); $this->amqpExchange->setFlags($this->exchangeOptions['flags'] ?? AMQP_DURABLE); + foreach ($this->exchangeOptions['bindings'] ?? [null] as $bindingExchangeName => $bindingExchangeOption) { + $this->amqpExchange->declareExchange(); + + $bindingArguments = $bindingExchangeOption['binding_arguments'] ?? []; + + foreach ($bindingExchangeOption['binding_keys'] ?? [''] as $bindingKey) { + $this->amqpExchange->bind($bindingExchangeName, $bindingKey, $bindingArguments); + } + } + if (isset($this->exchangeOptions['arguments'])) { $this->amqpExchange->setArguments($this->exchangeOptions['arguments']); } From b3bdefeacb2186fb6af23d8fe4618c00a55dd20b Mon Sep 17 00:00:00 2001 From: danielkorytek Date: Sun, 1 Dec 2019 11:36:22 +0100 Subject: [PATCH 2/4] Changelog update --- src/Symfony/Component/Messenger/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/Messenger/CHANGELOG.md b/src/Symfony/Component/Messenger/CHANGELOG.md index a62b72a5bc3d..f9a1032523c8 100644 --- a/src/Symfony/Component/Messenger/CHANGELOG.md +++ b/src/Symfony/Component/Messenger/CHANGELOG.md @@ -3,7 +3,7 @@ CHANGELOG 5.0.0 ----- - + * Added support for exchange binding to another exchange in AMQP transport * The `LoggingMiddleware` class has been removed, pass a logger to `SendMessageMiddleware` instead. * made `SendersLocator` require a `ContainerInterface` as 2nd argument From 8b78af8579a9a04b86c6071419b113ac0b780b29 Mon Sep 17 00:00:00 2001 From: danielkorytek Date: Sun, 1 Dec 2019 13:00:17 +0100 Subject: [PATCH 3/4] Fix --- .../Component/Messenger/Transport/AmqpExt/Connection.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/Messenger/Transport/AmqpExt/Connection.php b/src/Symfony/Component/Messenger/Transport/AmqpExt/Connection.php index 0df1dd9f4faa..4093b75c2f88 100644 --- a/src/Symfony/Component/Messenger/Transport/AmqpExt/Connection.php +++ b/src/Symfony/Component/Messenger/Transport/AmqpExt/Connection.php @@ -426,7 +426,7 @@ public function exchange(): \AMQPExchange $this->amqpExchange->setType($this->exchangeOptions['type'] ?? AMQP_EX_TYPE_FANOUT); $this->amqpExchange->setFlags($this->exchangeOptions['flags'] ?? AMQP_DURABLE); - foreach ($this->exchangeOptions['bindings'] ?? [null] as $bindingExchangeName => $bindingExchangeOption) { + foreach ($this->exchangeOptions['bindings'] ?? [] as $bindingExchangeName => $bindingExchangeOption) { $this->amqpExchange->declareExchange(); $bindingArguments = $bindingExchangeOption['binding_arguments'] ?? []; From 8f89e3c37536eba9727fdae82836df741aa52087 Mon Sep 17 00:00:00 2001 From: danielkorytek Date: Sun, 1 Dec 2019 13:33:23 +0100 Subject: [PATCH 4/4] Changelog update --- src/Symfony/Component/Messenger/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Symfony/Component/Messenger/CHANGELOG.md b/src/Symfony/Component/Messenger/CHANGELOG.md index f9a1032523c8..b3eee58a3388 100644 --- a/src/Symfony/Component/Messenger/CHANGELOG.md +++ b/src/Symfony/Component/Messenger/CHANGELOG.md @@ -3,6 +3,7 @@ CHANGELOG 5.0.0 ----- + * Added support for exchange binding to another exchange in AMQP transport * The `LoggingMiddleware` class has been removed, pass a logger to `SendMessageMiddleware` instead. * made `SendersLocator` require a `ContainerInterface` as 2nd argument pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy