Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2019
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.87 KB | None | 0 0
  1. <?php
  2.  
  3. namespace App\Consumer;
  4.  
  5. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  6. use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
  7. use Webslon\Bundle\ApiBundle\AMQP\Packet;
  8. use Webslon\Bundle\ApiBundle\AMQP\Producer;
  9. use Webslon\Bundle\ApiBundle\Annotation\Enqueue\ExchangeParameters;
  10. use Webslon\Bundle\ApiBundle\Consumer\Consumer;
  11. use Webslon\Bundle\ApiBundle\Annotation\Enqueue\Consume;
  12.  
  13. class DemoConsumer extends Consumer
  14. {
  15.     /** @var TokenStorageInterface */
  16.     private $tokenStorage;
  17.  
  18.     /** @var AuthorizationCheckerInterface */
  19.     private $authorizationChecker;
  20.  
  21.     /** @var Producer */
  22.     private $producer;
  23.  
  24.     /**
  25.      * DemoConsumer constructor.
  26.      * @param TokenStorageInterface $tokenStorage
  27.      * @param AuthorizationCheckerInterface $authorizationChecker
  28.      * @param Producer $producer
  29.      */
  30.     public function __construct(TokenStorageInterface $tokenStorage, AuthorizationCheckerInterface $authorizationChecker, Producer $producer)
  31.     {
  32.         $this->tokenStorage = $tokenStorage;
  33.         $this->authorizationChecker = $authorizationChecker;
  34.         $this->producer = $producer;
  35.     }
  36.  
  37.     /**
  38.      * @Consume(queue="demo_queue_a")
  39.      */
  40.     public function a(Packet $packet)
  41.     {
  42.         dump('Делаю запрос из '.__FUNCTION__.' '.$packet->getId());
  43.         $this->replyContext()->set('demo_queue.a.message', 'Значение из консьюмера a');
  44.         $this->rpcForwardAsync('', [], 'demo_queue_b', 'demo_queue_a_responses');
  45.         $this->ack();
  46.     }
  47.  
  48.     /**
  49.      * @Consume(queue="demo_queue_a_responses")
  50.      */
  51.     public function aResponses(Packet $packet)
  52.     {
  53.         dump('Ответ дошел до '.__FUNCTION__);
  54.         dump('Конец обработки ответов');
  55.  
  56.         dump('Reply context "demo_queue.a.message":'.$this->replyContext()->get('demo_queue.a.message'));
  57.         dump('Reply context "demo_queue.b.message":'.$this->replyContext()->get('demo_queue.b.message'));
  58.         dump('Reply context "demo_queue.c.message":'.$this->replyContext()->get('demo_queue.c.message'));
  59.  
  60.         $this->ack();
  61.     }
  62.  
  63.     /**
  64.      * @Consume(queue="demo_queue_b")
  65.      */
  66.     public function b(Packet $packet)
  67.     {
  68.         dump('Делаю запрос из '.__FUNCTION__.' '.$packet->getId());
  69.         $this->replyContext()->set('demo_queue.b.message', 'Значение из консьюмера b');
  70.         $this->rpcForwardAsync('', [], 'demo_queue_c', 'demo_queue_b_responses');
  71.         $this->ack();
  72.     }
  73.  
  74.     /**
  75.      * @Consume(queue="demo_queue_b_responses")
  76.      */
  77.     public function bResponses(Packet $packet)
  78.     {
  79.         dump('Передаю ответ дальше из '.__FUNCTION__);
  80.         $this->reply([]);
  81.         $this->ack();
  82.     }
  83.  
  84.     /**
  85.      * @Consume(queue="demo_queue_c")
  86.      */
  87.     public function c(Packet $packet)
  88.     {
  89.         dump('Делаю запрос из '.__FUNCTION__.' '.$packet->getId());
  90.         $this->replyContext()->set('demo_queue.c.message', 'Значение из консьюмера c');
  91.         $this->rpcForwardAsync('', [], 'demo_queue_d', 'demo_queue_c_responses');
  92.         $this->ack();
  93.     }
  94.  
  95.     /**
  96.      * @Consume(queue="demo_queue_c_responses")
  97.      */
  98.     public function cResponses(Packet $packet)
  99.     {
  100.         dump('Передаю ответ дальше из '.__FUNCTION__);
  101.         $this->reply([]);
  102.         $this->ack();
  103.     }
  104.  
  105.     /**
  106.      * @Consume(queue="demo_queue_d")
  107.      */
  108.     public function d(Packet $packet)
  109.     {
  110.         dump('Цепочка запросов завершена, передаю ответ по цепочке');
  111.         $this->replyContext()->set('demo_queue.d.message', 'Значение из консьюмера d');
  112.  
  113.         $this->reply([]);
  114.         $this->ack();
  115.     }
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement