Esempio n. 1
0
 /**
  * @param SegmentInterface      $segment
  * @param \Parsley\Core\Payload $payload
  */
 public function onPayloadResend($segment, $payload)
 {
     $this->fireSegmentEvent('resend', [$payload]);
     /** @var \Parsley\Plugins\Brokers\BrokerInterface $broker */
     $broker = $this->container['parsley.broker'];
     $delivery = $payload->getDelivery();
     //        $properties = $payload->getProperties();
     //        $headers    = $properties->getHeaders();
     //        // TODO: move this logic to separate plugin, first time just resend (and if resend properly count attempts), then modify headers and send as new
     //        if (isset($headers['parsley-retries'])) {
     //            if ($headers['parsley-retries'] > 0) {
     //                // retry policy
     //                $headers['parsley-retries']--;
     //
     //                isset($headers['parsley-attempted'])
     //                    ? $headers['parsley-attempted']++
     //                    : $headers['parsley-attempted'] = 1;
     //
     //                $payload->getProperties()->setHeaders($headers);
     //                $this->broker->send($payload); // not a real resend, how should backend notified?
     //            } else {
     //                $this->broker->drop($payload);
     //            }
     //        } else {
     // standard 1 redelivery if not redelivered
     $resend = $delivery && !$delivery->getEnvelope()->isRedeliver();
     if ($resend) {
         $broker->drop($payload);
     } else {
         $broker->resend($payload);
         // special case resend, notify backend?
     }
     $this->fireSegmentEvent('resent', [$payload, $resend]);
 }