/** * @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]); }