В чем разница между типизированными и нетипизированными актерами в Akka?Когда использовать что? - PullRequest
26 голосов
/ 15 ноября 2011

Я попытался прочитать документацию Akka, чтобы узнать точную разницу между типизированными и нетипизированными актерами. Когда использовать что? Я не уверен, что мне не хватает. Может кто-нибудь указать мне на что-то важное или дать ответ на этот вопрос здесь?

Ответы [ 4 ]

18 голосов
/ 15 ноября 2011

UntypedActor - это просто имя Actor, но как Java API.

Я очень удивлен, что документации недостаточно:

Java:

Scala:

Разница в том, что TypedActors имеют статический интерфейс, а вызовы методов на этом интерфейсе преобразуются в отправку сообщений.UntypedActors может получить любое сообщение.

Надеюсь, это поможет.

Приветствия, √

4 голосов
/ 15 ноября 2011
Actors (Untyped)

Чтобы актеры (Scala) получали сообщения, они должны смешивать черту Потребителя.Например, следующий класс субъекта (Consumer1) реализует метод endpointUri, который объявлен в признаке Consumer, для получения сообщений из файла: конечная точка Camel data / input / actor.Нетипизированные акторы (Java) должны расширять абстрактный класс UntypedConsumerActor и реализовывать методы getEndpointUri () и onReceive (Object).

Actors (Typed)

Типизированные актеры также могут получать сообщения от конечных точек Camel.В отличие от (нетипизированных) субъектов, которые реализуют только один метод receive или onReceive, типизированный субъект может определять несколько методов (обработки сообщений), каждый из которых может получать сообщения от другой конечной точки Camel.Чтобы метод типизированного актера был представлен как конечная точка Camel, он должен быть аннотирован аннотацией @consume.Например, следующий типизированный потребительский субъект определяет два метода, foo и bar.

Reference

2 голосов
/ 01 января 2015

Нетипизированные субъекты отвечают на отправленные сообщения, в то время как типизированные субъекты отвечают на вызовы методов (значения параметров - это сообщения).

Типизированная модель субъекта используется для определения строгих контрактов для субъектов, которые могут отвечать толькопредопределенный набор сообщений.В этом случае каждое сообщение не обязательно должно быть заключено в один объект;Типизированные субъекты позволяют нам определять отдельные методы, которые принимают несколько входных данных, как определено договором.На языке Java типизированные акторы предоставляют интерфейс Java в объектно-ориентированном мире. [1]

[1] Akka Essentials

1 голос
/ 18 августа 2016

Нетипизированные актеры Akka «не сочиняют» и «не набираются».

Это побеждает саму причину, по которой мы используем Scala: это функциональные возможности программирования. См. http://noelwelsh.com/programming/2013/03/04/why-i-dont-like-akka-actors/ для более глубокого понимания этого мышления.

Также см. Попытки улучшить это в Scala, чтобы соответствовать пути Haskell.

http://letitcrash.com/post/40198993865/makkros-first-step-towards-typed-channels http://letitcrash.com/post/45188487245/the-second-step-akka-typed-channels

Кажется, все еще экспериментальный в Акке или даже упал - не ясно.

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

Akka Typed, кажется, является большой эволюцией к более безопасной модели программирования: https://opencredo.com/akka-typed/

...