powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / получить ответ от актора в акка
25 сообщений из 45, страница 1 из 2
получить ответ от актора в акка
    #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
получить ответ от актора в акка
    #40048306
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У тебя актор какой-то неправильный. Вот смотри тут как делают
https://doc.akka.io/docs/akka/current/typed/actor-lifecycle.html#creating-actors
...
Рейтинг: 0 / 0
получить ответ от актора в акка
    #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
получить ответ от актора в акка
    #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
получить ответ от актора в акка
    #40048326
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,
Тебя асинхронно не устраивает получить событии что ли?
...
Рейтинг: 0 / 0
получить ответ от актора в акка
    #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
получить ответ от актора в акка
    #40048358
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
lleming,
Тебя асинхронно не устраивает получить событии что ли?


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

Я нашел этот api

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

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

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

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

футура это обещание результата а не сам результат. может он будет а может и не будет. и дальше ты уже с этим обещанием делаешь что то.
...
Рейтинг: 0 / 0
получить ответ от актора в акка
    #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
получить ответ от актора в акка
    #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
получить ответ от актора в акка
    #40048370
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В первом посту ты захотел из актора как из функции получить результат. Актор скорее всего так не работает.
Его юзкейс предполагает что он либо пошлет парочку месседжей либо создаст парочку новых акторов.

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

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

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

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


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

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

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

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

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

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


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

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

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

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


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


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

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

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

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

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

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

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


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

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

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


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


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