/** * Determine the required process type based on given message and the message handler which will receive the message. * * @param Message $message * @param MessageHandler $messageHandler * @return ProcessType * @throws Workflow\Exception\MessageIsNotManageable */ private function determineProcessType(Message $message, MessageHandler $messageHandler) { if ($messageHandler->canHandleMessage($message)) { if ($message->processingMetadata()->shouldCollectionBeSplitIntoChunks()) { $processType = ProcessType::parallelChunk(); } else { $processType = ProcessType::linearMessaging(); } } else { //We create the error before trying the foreach alternative to provide the client with the original error message //if the alternative fails too. $originalError = MessageIsNotManageable::byMessageHandler($messageHandler, $message); //Check if we can use a foreach process to avoid the rejection of the message if ($this->isForeachProcessPossible($message, $messageHandler)) { $processType = ProcessType::parallelForeach(); } else { throw $originalError; } } return $processType; }
/** * @test */ function it_is_equal_to_a_similar_type() { $type1 = ProcessType::parallelChunk(); $type2 = ProcessType::parallelChunk(); $this->assertTrue($type1->equals($type2)); }