Skip to content

Commit 603c84b

Browse files
committed
Allow configuration in queue_consumer.xml to be higher than default
1 parent a6933f3 commit 603c84b

File tree

1 file changed

+28
-3
lines changed

1 file changed

+28
-3
lines changed

app/code/Magento/MessageQueue/Model/Cron/ConsumersRunner.php

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,7 @@ public function run(): void
139139
];
140140

141141
if ($maxMessages) {
142-
$arguments[] =
143-
'--max-messages=' . min($consumer->getMaxMessages() ?? $maxMessages, $maxMessages);
142+
$arguments = $this->addMaxMessagesArgument($arguments, $consumer, $maxMessages);
144143
}
145144

146145
$command = $php . ' ' . BP . '/bin/magento queue:consumers:start %s %s'
@@ -155,7 +154,7 @@ public function run(): void
155154
];
156155

157156
if ($maxMessages) {
158-
$arguments[] = '--max-messages=' . min($consumer->getMaxMessages() ?? $maxMessages, $maxMessages);
157+
$arguments = $this->addMaxMessagesArgument($arguments, $consumer, $maxMessages);
159158
}
160159

161160
$command = $php . ' ' . BP . '/bin/magento queue:consumers:start %s %s'
@@ -166,6 +165,32 @@ public function run(): void
166165
}
167166
}
168167

168+
/**
169+
* Add max-messages argument and log warning if exceeds default
170+
*
171+
* @param array $arguments Arguments array to append to
172+
* @param ConsumerConfigItemInterface $consumer
173+
* @param int $defaultMaxMessages
174+
* @return array
175+
*/
176+
private function addMaxMessagesArgument(array $arguments, ConsumerConfigItemInterface $consumer, int $defaultMaxMessages): array
177+
{
178+
$consumerMaxMessages = $consumer->getMaxMessages() ?? $defaultMaxMessages;
179+
180+
if ($consumerMaxMessages > $defaultMaxMessages) {
181+
$this->logger->warning(__(
182+
'Consumer "%1" has max-messages=%2 which exceeds the configured default (%3). This may probably cause high memory usage or long processing times.',
183+
$consumer->getName(),
184+
$consumerMaxMessages,
185+
$defaultMaxMessages
186+
));
187+
}
188+
189+
$arguments[] = '--max-messages=' . $consumerMaxMessages;
190+
191+
return $arguments;
192+
}
193+
169194
/**
170195
* Checks that the consumer can be run
171196
*

0 commit comments

Comments
 (0)