Skip to content

Commit 0dbd648

Browse files
committed
Fixed losing message priority for dbal driver
1 parent 2b9c6ac commit 0dbd648

File tree

2 files changed

+29
-2
lines changed

2 files changed

+29
-2
lines changed

pkg/dbal/Client/DbalDriver.php

+28-1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,17 @@ class DbalDriver implements DriverInterface
3030
*/
3131
private $queueMetaRegistry;
3232

33+
/**
34+
* @var array
35+
*/
36+
private static $priorityMap = [
37+
MessagePriority::VERY_LOW => 0,
38+
MessagePriority::LOW => 1,
39+
MessagePriority::NORMAL => 2,
40+
MessagePriority::HIGH => 3,
41+
MessagePriority::VERY_HIGH => 4,
42+
];
43+
3344
/**
3445
* @param DbalContext $context
3546
* @param Config $config
@@ -63,6 +74,9 @@ public function createTransportMessage(Message $message)
6374
$transportMessage->setDelay($message->getDelay());
6475
$transportMessage->setReplyTo($message->getReplyTo());
6576
$transportMessage->setCorrelationId($message->getCorrelationId());
77+
if (array_key_exists($message->getPriority(), self::$priorityMap)) {
78+
$transportMessage->setPriority(self::$priorityMap[$message->getPriority()]);
79+
}
6680

6781
return $transportMessage;
6882
}
@@ -83,11 +97,16 @@ public function createClientMessage(PsrMessage $message)
8397
$clientMessage->setContentType($message->getHeader('content_type'));
8498
$clientMessage->setMessageId($message->getMessageId());
8599
$clientMessage->setTimestamp($message->getTimestamp());
86-
$clientMessage->setPriority(MessagePriority::NORMAL);
87100
$clientMessage->setDelay($message->getDelay());
88101
$clientMessage->setReplyTo($message->getReplyTo());
89102
$clientMessage->setCorrelationId($message->getCorrelationId());
90103

104+
$priorityMap = array_flip(self::$priorityMap);
105+
$priority = array_key_exists($message->getPriority(), $priorityMap) ?
106+
$priorityMap[$message->getPriority()] : MessagePriority::NORMAL;
107+
$clientMessage->setPriority($priority);
108+
109+
91110
return $clientMessage;
92111
}
93112

@@ -156,4 +175,12 @@ public function getConfig()
156175
{
157176
return $this->config;
158177
}
178+
179+
/**
180+
* @return array
181+
*/
182+
public static function getPriorityMap()
183+
{
184+
return self::$priorityMap;
185+
}
159186
}

pkg/dbal/DbalConsumer.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ protected function receiveMessage()
176176
->where('queue = :queue')
177177
->andWhere('(delayed_until IS NULL OR delayed_until <= :delayedUntil)')
178178
->orderBy('priority', 'desc')
179-
->orderBy('id', 'asc')
179+
->addOrderBy('id', 'asc')
180180
->setMaxResults(1)
181181
;
182182

0 commit comments

Comments
 (0)