/** * Do the actual work of the script. */ public function execute() { $basePath = 'maintenance/consume-pending/'; $consumer = new PendingQueueConsumer($this->getOption('queue'), $this->getOptionOrConfig('time-limit', $basePath . 'time-limit'), $this->getOptionOrConfig('max-messages', $basePath . 'message-limit')); $startTime = time(); $messageCount = $consumer->dequeueMessages(); $elapsedTime = time() - $startTime; Logger::info("Processed {$messageCount} pending messages in {$elapsedTime} seconds."); }
/** * We refuse to consume a message and drop it if the corresponding * payments_initial row is failed. */ public function testPendingMessageInitialFailed() { $initRow = PaymentsInitialDatabaseTest::generateTestMessage(); $initRow['payments_final_status'] = 'failed'; $initRow['validation_action'] = 'reject'; $this->paymentsInitialDb->storeMessage($initRow); $message = self::generatePendingMessageFromInitial($initRow); $consumer = new PendingQueueConsumer('pending', 1000, 1000); $consumer->processMessage($message); $fetched = $this->pendingDb->fetchMessageByGatewayOrderId($message['gateway'], $message['order_id']); $this->assertNull($fetched, 'Message consumed and not stored in the pending database.'); }