java .lang.ClassCastException в messageAdapter - PullRequest
0 голосов
/ 21 июня 2020

У меня есть набранный Behavior, который отправляет сообщения другому сообщению и использует context.messageAdapter для маршрутизации ответов обратно самому себе. Для этого другого поведения отправляются разные сообщения, требующие адаптеров сообщений другой формы.

По какой-то причине ответы смешиваются в почтовом ящике, и ответ для одного адаптера обрабатывается адаптером для другого, вызывая исключение приведения .

Ожидается ли это, и мне пока только повезло, что сообщения не приходят не по порядку или как еще я могу предотвратить обработку сообщения неправильным адаптером?

Это с акка 2.5.31. Я не пробовал 2.6.x, потому что в нем слишком много критических изменений, чтобы я мог закончить кодовую базу.

Изменить: я подозреваю, что я становлюсь жертвой type_erasure здесь. Эти два адаптера предназначены для:

type Response[A] = Either[ElasticSearchError, A]

final case class GetDenormalizationState(
 query: EsDenormalizationFetch,
 replyTo: ActorRef[Response[Map[Long,DateTime]]]) extends StatelessCommand

final case class GetEntity(
  entityType: String,
  id: Long,
  replyTo: ActorRef[Response[Option[EsEntity]]]) extends StatelessCommand

Т.е. он просто видит Left и Right и не может отличить разницу, кроме выбора первого найденного.

...