Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

Java:

Scala:

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

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

Cheers, √

Ответ 2

Actors (Untyped)

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

Actors (Typed)

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

Ссылка

Ответ 3

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

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

[1] Akka Essentials

Ответ 4

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

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