/** * The main method that creates new instances in a separate context. * * @param \AppserverIo\Psr\Application\ApplicationInterface $application The application instance to register the class loader with * @param \AppserverIo\Appserver\Core\Api\Node\ManagerNodeInterface $managerConfiguration The manager configuration * * @return void */ public static function visit(ApplicationInterface $application, ManagerNodeInterface $managerConfiguration) { // initialize the stackable containers $queues = new GenericStackable(); $workers = new GenericStackable(); $messages = new GenericStackable(); // initialize the queue locator $queueLocator = new QueueLocator(); // initialize the default settings for message queue $queueManagerSettings = new QueueManagerSettings(); $queueManagerSettings->mergeWithParams($managerConfiguration->getParamsAsArray()); // initialize the queue manager $queueManager = new QueueManager(); $queueManager->injectQueues($queues); $queueManager->injectWorkers($workers); $queueManager->injectMessages($messages); $queueManager->injectApplication($application); $queueManager->injectResourceLocator($queueLocator); $queueManager->injectManagerSettings($queueManagerSettings); // attach the instance $application->addManager($queueManager, $managerConfiguration); }