В чем разница между типизированными и Нетипизированными актерами в Akka? Когда использовать что?

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

4 ответов


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

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

Java:

Scala:

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

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

Ура, √


Actors (Untyped)

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

Actors (Typed)

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

ссылка


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

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

[1] Akka Essentials


Акка нетипизированные актеры "не сочиняют "и"не печатаются с пользой".

Это побеждает саму причину, по которой мы используем 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 или даже упал-не ясно.

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

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