/**
  * @param \Parsley\Plugins\SegmentInterface $segment
  * @param Payload                           $payload
  */
 public function onSend($segment, $payload)
 {
     $props = $payload->getProperties();
     /** @var \Parsley\Application $application */
     $application = $this->container['parsley.application'];
     // TODO: dirty hack, get rid of it
     if (empty($props->getMessageId()) && $props->getMessageId() != 0) {
         // TODO: make id maker be accessible via container (or plugin?)
         // http://php.net/manual/en/function.uniqid.php#94959
         $uuid = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xfff) | 0x4000, mt_rand(0, 0x3fff) | 0x8000, mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff));
         $props->setMessageId($uuid);
     }
     $props->setAppId($application->getName());
     $props->setType('payload');
     $props->setContentType($this->container['config']->get('parsley.payload.content_type', 'application/json'));
     //        if (!$props->getAppId()) {
     //            $props->setAppId($segment->getName());
     //        }
     //
     //        if (!$props->getType()) {
     //            $props->setType('payload');
     //        }
     //
     //        if (!$props->getContentType()) {
     //            $props->setContentType($this->container['config']->get('parsley.payload.content_type', 'application/json'));
     //        }
 }
Beispiel #2
0
 public function send(Payload $payload)
 {
     $this->fireSegmentEvent('send', [$payload]);
     /** @var \AMQPy\Publisher $publisher */
     $publisher = $this->container['parsley.brokers.rabbitmq.publisher'];
     /** @var \Parsley\Helpers\PayloadBuilder $payload_builder */
     $payload_builder = $this->container['parsley.payload_builder'];
     $props = $payload->getProperties();
     $priority = $props->getPriority();
     if (null === $priority) {
         $priority = $this->container['config']->get('parsley.priority', 'default');
     } else {
         /** @var \Illuminate\Config\Repository $config */
         $config = $this->container['config'];
         $priorities_map = $config->get('parsley.priorities');
         $priority = array_get($priorities_map, $priority, 'default');
     }
     $routing_key = $priority . '.' . $payload->getName();
     if (!is_numeric($priority)) {
         $props->setPriority(null);
     }
     $publisher->publish($payload_builder->toArray($payload), $routing_key, $payload->getProperties());
     $this->fireSegmentEvent('sent', [$payload, $priority, $routing_key]);
 }