コード例 #1
0
 private function loadConsumers($app)
 {
     $app['rabbit.consumer'] = $app->share(function ($app) {
         if (!isset($app['rabbit.consumers'])) {
             return;
         }
         $consumers = [];
         foreach ($app['rabbit.consumers'] as $name => $options) {
             $connection = $this->getConnection($app, $options, $app['rabbit.connections']);
             $consumer = new Consumer($connection);
             $consumer->setExchangeOptions($options['exchange_options']);
             $consumer->setQueueOptions($options['queue_options']);
             $consumer->setCallback(array($app[$options['callback']], 'execute'));
             if (array_key_exists('qos_options', $options)) {
                 $consumer->setQosOptions($options['qos_options']['prefetch_size'], $options['qos_options']['prefetch_count'], $options['qos_options']['global']);
             }
             if (array_key_exists('qos_options', $options)) {
                 $consumer->setIdleTimeout($options['idle_timeout']);
             }
             if (array_key_exists('auto_setup_fabric', $options) && !$options['auto_setup_fabric']) {
                 $consumer->disableAutoSetupFabric();
             }
             $consumers[$name] = $consumer;
         }
         return $consumers;
     });
 }