Я хотел бы неявно распространять контекст запроса в системе взаимодействующих субъектов.
Чтобы упростить и представить ситуацию, моя система имеет несколько субъектов, и сообщения, передаваемые этим субъектам, должны включать этот объект RequestContext.
ActorA получает сообщения типа MessageA ActorB получает сообщения типа MessageB
когда ActorA необходимо отправить сообщение ActorB, как часть обработки MessageA, он выполняет бизнес-логику, а затем создает MessageB из результатов логики, а также RequestContext, доступного в MessageA, и затем отправляет его ActorB.
def handle(ma:MessageA) {
val intermediateResult = businessLogic(ma)
actorB ! MessageB(intermediateResult, ma.requestContext)
}
У нас есть множество сообщений, которые нужно обработать, и явная передача requestContext обременительна.
Я пытаюсь найти творческие способы использования неявной функции Scala, чтобы избежать явного внедрения RequestContext, встроенного во входящее сообщение, в исходящее сообщение.
Сообщения являются классами case (и они должны быть). Я читал о неявных правилах, но перенос атрибута объекта в текущую неявную область видимости кажется надуманным.
Это, я уверен, должно быть общим требованием. Какие-либо предложения ?
Спасибо.