Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / получить ответ от актора в акка / 25 сообщений из 45, страница 1 из 2
24.02.2021, 10:17
    #40048296
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить ответ от актора в акка
Чтото не могу найти api. Вообще дернуть нужно актор чтобы получить данные из него. Есть вот такое

ComletableStage<Object> result = Patterns.ask(actor, message, duration)

в документации все нечетко что за actor, source или target. Если таргет то откуда известен source, а если source (of data) то куда возвращаются данные.

к тому же api для обработки сообщений не подразумевает как данные(result) возвращать или куда. Сигнатура метода

Код: java
1.
2.
3.
4.
5.
6.
class MySourceActor{
    public Behavior<Command> listAll(HereIsMyMessageType message){
        Object result = this.actorInternalState.makeSomeResult();   // куда слать этот резалт если он никуда не возврщается ?
        return Behaviors.same();
    }
}
...
Рейтинг: 0 / 0
24.02.2021, 11:05
    #40048306
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить ответ от актора в акка
У тебя актор какой-то неправильный. Вот смотри тут как делают
https://doc.akka.io/docs/akka/current/typed/actor-lifecycle.html#creating-actors
...
Рейтинг: 0 / 0
24.02.2021, 11:57
    #40048317
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить ответ от актора в акка
С актором то вроде все ок. Сделано все по документации к акке. И вроде даже работает.
Непонятно как состыковать акку или превратить вызов актора в computedstage. Т.е. стартануть актор можно, но рельзтата не выдернуть т.к. когда там все закончится неизвестно.

Пока только нашел что чтобы актор прикрутить к текущий спринговой модели то в каждый актор еще нужно и lock передавать чтобы искуственный барьер сделать для получения compltedstage но это как бы от чего старались избавиться в акке.

Грубо говорят вот сервис

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
class SomeService implement Service{

  public CompletedStage<Result> doSomething(final Iterable<In> data){
            processManager.spawn(Calculator.create(data), "processing-" + counter);
            processingManager.tell(Start.class);
            return ...; ?
  }
}



PS. все на java.
...
Рейтинг: 0 / 0
24.02.2021, 12:12
    #40048319
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить ответ от актора в акка
Ощущение что вокруг да около хожу. Не ужто через колбак делать нужно и нет готового API?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
class SomeService implement Service{

  public CompletedStage<Result> doSomething(final Iterable<In> data){
            CompletableFuture<Result> resultFuture = new CompletableFuture<Result>();
            processManager.spawn(Calculator.create(data, resultFuture), "processing-" + counter);
            processingManager.tell(Start.class);
            return resultFuture; 
  }
}


?
...
Рейтинг: 0 / 0
24.02.2021, 12:20
    #40048326
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить ответ от актора в акка
lleming,
Тебя асинхронно не устраивает получить событии что ли?
...
Рейтинг: 0 / 0
24.02.2021, 12:24
    #40048327
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить ответ от актора в акка
lleming
Ощущение что вокруг да около хожу. Не ужто через колбак делать нужно и нет готового API?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
class SomeService implement Service{

  public CompletedStage<Result> doSomething(final Iterable<In> data){
            CompletableFuture<Result> resultFuture = new CompletableFuture<Result>();
            processManager.spawn(Calculator.create(data, resultFuture), "processing-" + counter);
            processingManager.tell(Start.class);
            return resultFuture; 
  }
}


?

Вообще очень плохая идея использовать акку частично. По опыту, либо на нее полностью переходить либо полностью выкинуть(предпочтительнее)... что у вас за кейс такой хитрый? Акторы без стейта - антипаттерн, кстати.
Пишут вот так можно - но тогда надо тащить scala jars в проект
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
import akka.dispatch.*;
import scala.concurrent.ExecutionContext;
import scala.concurrent.Future;
import scala.concurrent.Await;
import scala.concurrent.Promise;
import akka.util.Timeout;

Timeout timeout = Timeout.create(Duration.ofSeconds(5));
Future<Object> future = Patterns.ask(actor, msg, timeout);
String result = (String) Await.result(future, timeout.duration());
...
Рейтинг: 0 / 0
24.02.2021, 13:37
    #40048358
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить ответ от актора в акка
PetroNotC Sharp
lleming,
Тебя асинхронно не устраивает получить событии что ли?


Устраивает. Вопрос лишь в том как это сделать. Мне не нравится вариант с отправкой ссылки на completablefuture в сообщении чтобы actor делал complete этой future. Во первых это самоделка, и я подозреваю что есть api который позволяет это делать проще.

Я нашел этот api

ComletableStage<Object> result = Patterns.ask(actor, message, duration)

но не понимаю как он работает поскольку он не работает и по смыслу он бесмысленный по причинам вначале поста

Документация очень слабая и пока получить стейт актора вне системы акка не получается.
...
Рейтинг: 0 / 0
24.02.2021, 13:42
    #40048361
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить ответ от актора в акка
что тут неясного? ты говоришь актору вот объект (мессадж) вот ты актор. дай мне результат.

он тебе возвращает футуру результата.

футура это обещание результата а не сам результат. может он будет а может и не будет. и дальше ты уже с этим обещанием делаешь что то.
...
Рейтинг: 0 / 0
24.02.2021, 13:43
    #40048362
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить ответ от актора в акка
забыл ник
lleming
Ощущение что вокруг да около хожу. Не ужто через колбак делать нужно и нет готового API?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
class SomeService implement Service{

  public CompletedStage<Result> doSomething(final Iterable<In> data){
            CompletableFuture<Result> resultFuture = new CompletableFuture<Result>();
            processManager.spawn(Calculator.create(data, resultFuture), "processing-" + counter);
            processingManager.tell(Start.class);
            return resultFuture; 
  }
}


?

Вообще очень плохая идея использовать акку частично. По опыту, либо на нее полностью переходить либо полностью выкинуть(предпочтительнее)... что у вас за кейс такой хитрый?

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

Акторы без стейта - антипаттерн, кстати.

там мне и нужно снапшот стейта актора получить но не из акка системы а скажем по http запрос приходит узнать как там дела.
забыл ник

Пишут вот так можно - но тогда надо тащить scala jars в проект
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
import akka.dispatch.*;
import scala.concurrent.ExecutionContext;
import scala.concurrent.Future;
import scala.concurrent.Await;
import scala.concurrent.Promise;
import akka.util.Timeout;

Timeout timeout = Timeout.create(Duration.ofSeconds(5));
Future<Object> future = Patterns.ask(actor, msg, timeout);
String result = (String) Await.result(future, timeout.duration());



там у меня тот же самый пример вначале поста. К сожалению в документации не отразили как это можно применить, поскольку это даже не скомпилируется в том виде как указано в javadoc, да и здравому смыслу противоречит.
...
Рейтинг: 0 / 0
24.02.2021, 13:56
    #40048367
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить ответ от актора в акка
andreykaT
что тут неясного? ты говоришь актору вот объект (мессадж) вот ты актор. дай мне результат.

он тебе возвращает футуру результата.

футура это обещание результата а не сам результат. может он будет а может и не будет. и дальше ты уже с этим обещанием делаешь что то.


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
class MyActor extednds AbstractBehanvior<Command>{
   private Result computeResult(){
      var snapshot = snapshotActorState();
       return snapshot;
   }

   private Behavior<Command> onGetState(final GetState state){
           Result result = computeREsult();  //куда это передавать? Это мертвый код будет выпилен еще компилятором 
           return Behaviors.same();
   }
}


class SomeController {
   public CompleteStage<Result> getProcessManagerState(){
           return Pattersn.ask(actor, msg, duration); 
            // -> как акка знает что нужно вызвать метода computeResult ? В нем нет сообщения чтобы по типу определить что нужно вызывать его, этот метод никуда не привязан ни к какому соощению.
   }
}
...
Рейтинг: 0 / 0
24.02.2021, 13:59
    #40048370
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить ответ от актора в акка
В первом посту ты захотел из актора как из функции получить результат. Актор скорее всего так не работает.
Его юзкейс предполагает что он либо пошлет парочку месседжей либо создаст парочку новых акторов.

Если тебе нужно узнать "как там дела" - то это скорее всего называется мониторинг. И это (возможно)
описано здесь https://doc.akka.io/docs/akka/2.5/general/supervision.html

Насколько я понимаю философию акторного программирования - зависнувшие надолго (!) акторы просто
убиваются по линии принятия решения выше. Кто там сверху? Охранник. Guardian. И потом стек рестартует.
...
Рейтинг: 0 / 0
24.02.2021, 14:06
    #40048373
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить ответ от актора в акка
mayton
В первом посту ты захотел из актора как из функции получить результат. Актор скорее всего так не работает.
Его юзкейс предполагает что он либо пошлет парочку месседжей либо создаст парочку новых акторов.

Если тебе нужно узнать "как там дела" - то это скорее всего называется мониторинг. И это (возможно)
описано здесь https://doc.akka.io/docs/akka/2.5/general/supervision.html

Насколько я понимаю философию акторного программирования - зависнувшие надолго (!) акторы просто
убиваются по линии принятия решения выше. Кто там сверху? Охранник. Guardian. И потом стек рестартует.


Вот такая вот постановка говорит о том что akka не интегрируется с другими фрейворками типа спригбута такое замечание уже было. Т.е отправил сообщение в акку из спригбута и все с концами. Что оно там делает непонятно и результатов не увидеть. Но здравый смысл подсказывает что акка без спригбута разве что только для маргиналов ибо всю обвязку, или щетай переписать спригбут на акторах "невозможно" да и не нужно.

значит есть способы но непонятно как пока.
...
Рейтинг: 0 / 0
24.02.2021, 14:13
    #40048379
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить ответ от актора в акка
Ну если у тебя akka работает одтельным процессом - то ты можешь в каком-то конечном шаге
внутри актора дёрнуть http POST на твой SpringBoot и сообщить что дескыть всё "чики-пики".

Но вообще архитектура должна быть по максимуму акторная если ты хочешь достичь каких-то
качеств. Типа там скорости и асинхронизма.

Я думаю что для отладки и диагностики в акке конечно-же есть всякие инструменты. Логгеры там..

Но об идеологии тоже надо думать - иначе зачем вообще Акка?
...
Рейтинг: 0 / 0
24.02.2021, 14:20
    #40048382
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить ответ от актора в акка
lleming,
Хмм мм...
Причём тут спринг бут?
Вроде ты запнулся на Hello world акторов.
То есть как они вообще работают.
А потом уже Интеграция ежа с ужом.
Message queue есть?
...
Рейтинг: 0 / 0
24.02.2021, 14:23
    #40048386
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить ответ от актора в акка
Зачем тебе message queue?

P.S. Большинство вопросов этом форуме лишены контекста.
...
Рейтинг: 0 / 0
24.02.2021, 14:28
    #40048388
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить ответ от актора в акка
PetroNotC Sharp
lleming,
Хмм мм...
Причём тут спринг бут?
Вроде ты запнулся на Hello world акторов.
То есть как они вообще работают.
А потом уже Интеграция ежа с ужом.
Message queue есть?


см первый пост. Как из не актора (сервиса) узнать состояние актора. Не важно какой сервис spring boot, jersy, apache common, quarkus.
...
Рейтинг: 0 / 0
24.02.2021, 14:30
    #40048390
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить ответ от актора в акка
mayton
Ну если у тебя akka работает одтельным процессом - то ты можешь в каком-то конечном шаге
внутри актора дёрнуть http POST на твой SpringBoot и сообщить что дескыть всё "чики-пики".

Но вообще архитектура должна быть по максимуму акторная если ты хочешь достичь каких-то
качеств. Типа там скорости и асинхронизма.

Я думаю что для отладки и диагностики в акке конечно-же есть всякие инструменты. Логгеры там..

Но об идеологии тоже надо думать - иначе зачем вообще Акка?


таще мта есть задачи которые хорошо накладывают на систему акторов. но не все
...
Рейтинг: 0 / 0
24.02.2021, 14:31
    #40048391
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить ответ от актора в акка
mayton,
Зачем? То что сабж работает в другой парадигмы. Ты верно сказал, через сообщения
22062814
...
Рейтинг: 0 / 0
24.02.2021, 14:32
    #40048392
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить ответ от актора в акка
lleming
PetroNotC Sharp
lleming,
Хмм мм...
Причём тут спринг бут?
Вроде ты запнулся на Hello world акторов.
То есть как они вообще работают.
А потом уже Интеграция ежа с ужом.
Message queue есть?


см первый пост. Как из не актора (сервиса) узнать состояние актора. Не важно какой сервис spring boot, jersy, apache common, quarkus.
ЗАЧЕМ?
В асинхронке нельзя сделать снимок и остановить время.
...
Рейтинг: 0 / 0
24.02.2021, 14:34
    #40048393
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить ответ от актора в акка
mayton
Зачем тебе message queue?

P.S. Большинство вопросов этом форуме лишены контекста.
тогда ТС честно говорит что задача вымышленная.
Целей нет! Или они абстрактные.
...
Рейтинг: 0 / 0
24.02.2021, 14:38
    #40048397
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить ответ от актора в акка
PetroNotC Sharp
mayton,
Зачем? То что сабж работает в другой парадигмы. Ты верно сказал, через сообщения
22062814

Вот тут есть интеграция в JMS системы https://doc.akka.io/docs/alpakka/current/jms/index.html
но это все (IMHO) обвесы которые просто потащут в архитектуру еще и брокер.

Надо тащить брокер чтобы продебажить какой-то пустяк? ХЗ. Яб не тащил.
...
Рейтинг: 0 / 0
24.02.2021, 14:38
    #40048398
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить ответ от актора в акка
lleming
mayton
Ну если у тебя akka работает одтельным процессом - то ты можешь в каком-то конечном шаге
внутри актора дёрнуть http POST на твой SpringBoot и сообщить что дескыть всё "чики-пики".

Но вообще архитектура должна быть по максимуму акторная если ты хочешь достичь каких-то
качеств. Типа там скорости и асинхронизма.

Я думаю что для отладки и диагностики в акке конечно-же есть всякие инструменты. Логгеры там..

Но об идеологии тоже надо думать - иначе зачем вообще Акка?


таще мта есть задачи которые хорошо накладывают на систему акторов. но не все
для начала можно без сабжа взять бут 2.4 и добавить reactive
...
Рейтинг: 0 / 0
24.02.2021, 14:40
    #40048400
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить ответ от актора в акка
mayton,
ТС пока молчит и про монитор и про дебаг.
Неужели нельзя добавить в актор пару сообщений дебага?
Странно.
...
Рейтинг: 0 / 0
24.02.2021, 14:41
    #40048401
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить ответ от актора в акка
PetroNotC Sharp
mayton
Зачем тебе message queue?

P.S. Большинство вопросов этом форуме лишены контекста.
тогда ТС честно говорит что задача вымышленная.
Целей нет! Или они абстрактные.

В 15 году я тоже спрашивал про акторы здесь https://www.sql.ru/forum/1179895/chetvergovye-aktory
Просто акторы в какой-то момент из баззворда стали пунктом в вакансиях и я заинтересовался.
...
Рейтинг: 0 / 0
24.02.2021, 14:41
    #40048402
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получить ответ от актора в акка
lleming
PetroNotC Sharp
lleming,
Хмм мм...
Причём тут спринг бут?
Вроде ты запнулся на Hello world акторов.
То есть как они вообще работают.
А потом уже Интеграция ежа с ужом.
Message queue есть?


см первый пост. Как из не актора (сервиса) узнать состояние актора. Не важно какой сервис spring boot, jersy, apache common, quarkus.
подписаться на его сообщения в отладочном режиме?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / получить ответ от актора в акка / 25 сообщений из 45, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]