@@ -179,18 +179,18 @@ public function publish(string $body, array $headers = [], int $delay = 0, strin
179
179
180
180
$ flags = $ this ->queueConfiguration ['flags ' ] ?? AMQP_NOPARAM ;
181
181
$ attributes = $ this ->getAttributes ($ headers );
182
- $ routingKey = $ this ->getRoutingKey ( $ routingKey );
182
+ $ routingKey = $ routingKey ?? $ this ->getExchangeRoutinKey ( );
183
183
184
184
$ this ->exchange ()->publish ($ body , $ routingKey , $ flags , $ attributes );
185
185
}
186
186
187
187
/**
188
188
* @throws \AMQPException
189
189
*/
190
- private function publishWithDelay (string $ body , array $ headers , int $ delay , ?string $ routingKey )
190
+ private function publishWithDelay (string $ body , array $ headers , int $ delay , ?string $ exchangeRoutingKey )
191
191
{
192
192
if ($ this ->shouldSetup ()) {
193
- $ this ->setupDelay ($ delay , $ routingKey );
193
+ $ this ->setupDelay ($ delay , $ exchangeRoutingKey );
194
194
}
195
195
196
196
$ routingKey = $ this ->getRoutingKeyForDelay ($ delay );
@@ -200,7 +200,7 @@ private function publishWithDelay(string $body, array $headers, int $delay, ?str
200
200
$ this ->getDelayExchange ()->publish ($ body , $ routingKey , $ flags , $ attributes );
201
201
}
202
202
203
- private function setupDelay (int $ delay , ?string $ routingKey )
203
+ private function setupDelay (int $ delay , ?string $ exchangeRoutingKey )
204
204
{
205
205
if (!$ this ->channel ()->isConnected ()) {
206
206
$ this ->clear ();
@@ -209,7 +209,7 @@ private function setupDelay(int $delay, ?string $routingKey)
209
209
$ exchange = $ this ->getDelayExchange ();
210
210
$ exchange ->declareExchange ();
211
211
212
- $ queue = $ this ->createDelayQueue ($ delay , $ routingKey );
212
+ $ queue = $ this ->createDelayQueue ($ delay , $ exchangeRoutingKey );
213
213
$ queue ->declareQueue ();
214
214
$ queue ->bind ($ exchange ->getName (), $ this ->getRoutingKeyForDelay ($ delay ));
215
215
}
@@ -234,7 +234,7 @@ private function getDelayExchange(): \AMQPExchange
234
234
* which is the original exchange, resulting on it being put back into
<
10000
code>235 235
* the original queue.
236
236
*/
237
- private function createDelayQueue (int $ delay , ?string $ routingKey )
237
+ private function createDelayQueue (int $ delay , ?string $ exchangeRoutingKey )
238
238
{
239
239
$ delayConfiguration = $ this ->connectionConfiguration ['delay ' ];
240
240
@@ -245,10 +245,10 @@ private function createDelayQueue(int $delay, ?string $routingKey)
245
245
'x-dead-letter-exchange ' => $ this ->exchange ()->getName (),
246
246
]);
247
247
248
- $ routingKey = $ this ->getRoutingKey ( $ routingKey );
249
- if ($ routingKey ) {
248
+ $ exchangeRoutingKey = $ exchangeRoutingKey ?? $ this ->getExchangeRoutinKey ( );
249
+ if (null !== $ exchangeRoutingKey ) {
250
250
// after being released from to DLX, this routing key will be used
251
- $ queue ->setArgument ('x-dead-letter-routing-key ' , $ routingKey );
251
+ $ queue ->setArgument ('x-dead-letter-routing-key ' , $ exchangeRoutingKey );
252
252
}
253
253
254
254
return $ queue ;
@@ -391,8 +391,14 @@ private function getAttributes(array $headers): array
391
391
return array_merge_recursive ($ this ->queueConfiguration ['attributes ' ] ?? [], ['headers ' => $ headers ]);
392
392
}
393
393
394
- private function getRoutingKey (? string $ expected = '' ): ?string
394
+ private function getExchangeRoutinKey ( ): ?string
395
395
{
396
- return $ expected ?: ($ this ->queueConfiguration ['routing_key ' ] ?? null );
396
+ $ routingKey = $ this ->exchangeConfiguration ['routing_key ' ] ?? null ;
397
+ if (null === $ routingKey && isset ($ this ->queueConfiguration ['routing_key ' ])) {
398
+ $ routingKey = $ this ->queueConfiguration ['routing_key ' ];
399
+ @trigger_error ('Setting routing key from queue configuration is deprecated. Use exchange configuration instead. ' , E_USER_DEPRECATED );
400
+ }
401
+
402
+ return $ routingKey ;
397
403
}
398
404
}
0 commit comments