/** * @param OutgoingReplyContext $context * @param callable $next */ public function invoke($context, callable $next) { $replyToAddress = $context->getReplyOptions()->getExplicitDestination(); if (!$replyToAddress) { $replyToAddress = $this->getReplyToAddressFromIncomingMessage($context->getIncomingPhysicalMessage()); } $context->setHeader(HeaderTypeEnum::MESSAGE_INTENT, MessageIntentEnum::REPLY); $logicalMessageContext = $this->contextFactory->createLogicalMessageContextFromReplyContext($replyToAddress, $context); $next($logicalMessageContext); }
/** * @param string $replyToAddress * @param OutgoingReplyContext $parentContext * * @return OutgoingLogicalMessageContext */ public function createLogicalMessageContextFromReplyContext($replyToAddress, OutgoingReplyContext $parentContext) { return new OutgoingLogicalMessageContext($parentContext->getMessageId(), $parentContext->getHeaders(), $parentContext->getLogicalMessage(), [new UnicastAddressTag($replyToAddress)], $parentContext->getReplyOptions()->isImmediateDispatchEnabled(), $parentContext->getIncomingPhysicalMessage(), $parentContext->getPendingTransportOperations(), $parentContext); }