powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / получить ответ от актора в акка
20 сообщений из 45, страница 2 из 2
получить ответ от актора в акка
    #40048405
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
lleming
пропущено...


см первый пост. Как из не актора (сервиса) узнать состояние актора. Не важно какой сервис spring boot, jersy, apache common, quarkus.
ЗАЧЕМ?
В асинхронке нельзя сделать снимок и остановить время.


Легко, просто нужно попросить. Причем здесь остановка времени возьми CopyOnWriteArrayList. Как бд работают хоть и запросы ассинхронно едут.

чет не могу понять при чем здесь остановить время. Я про конкретный api спрашиваю. Вот тебе без оставноки времени и message queueu.


Код: java
1.
2.
3.
4.
5.
6.
7.
  class MyActor extends AbstractBehanvior<Command>{

             public Behanvio<Command> snapshot(SnapshotCommand value){
                  value.future.comlete(snapshot());
                  return Behanviors.same();
             }
  }


done.
Ничего не надо останавливать. Но тут руками все управляется нужно правильно выделить и убить future т.е. свой велосипед писать.
Вот еще реализация.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
            class MyActorManager extends AbstractBehanvior<Command>{

              public MyActorManager<ActionContext context, SnapshotReplayTo ref){....}

             public Behanvio<Command> snapshot(SnapshotCommand value){
                  snapshotRefReplyTo.tell(snapshot()); 
                  return Behanviors.same();
             }
  }



тоже никаких очередей и остановок времени.

Но это тоже велосипед ибо придется на каждый чих всятвлять replyTo акторы.
...
Рейтинг: 0 / 0
получить ответ от актора в акка
    #40048407
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton,
ТС пока молчит и про монитор и про дебаг.
Неужели нельзя добавить в актор пару сообщений дебага?
Странно.


куда вставить месье? API еще нет непонятно как вызвать этот метод да так чтобы скомпилирвоался код а точку уже ставить хочешь?
...
Рейтинг: 0 / 0
получить ответ от актора в акка
    #40048410
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,
Давай начнём с теории и потом к практике. Акка не имеет глобальной консистентности данных. Согласен?
...
Рейтинг: 0 / 0
получить ответ от актора в акка
    #40048413
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как ни странно - https://doc.akka.io/docs/akka/current/logging.html

Или отладчик. Но я-бы не пользовался отладчиком. КМК он убийственно подействует на эти супервизоры.
...
Рейтинг: 0 / 0
получить ответ от актора в акка
    #40048416
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming
PetroNotC Sharp
mayton,
ТС пока молчит и про монитор и про дебаг.
Неужели нельзя добавить в актор пару сообщений дебага?
Странно.


куда вставить месье? API еще нет непонятно как вызвать этот метод да так чтобы скомпилирвоался код а точку уже ставить хочешь?
я имел ввиду так:
1 привет мир на акторах
2 ловить сообщения штатные акторов
3 добавить в актор до сообщения
4 ловить их тоже.
Какой пункт непонятен?
Это логирование а не Пошаговая.
...
Рейтинг: 0 / 0
получить ответ от актора в акка
    #40048419
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
lleming,
Давай начнём с теории и потом к практике. Акка не имеет глобальной консистентности данных. Согласен?


Дискутировать не хочется абстрактно ни к чему это не приведет. Я привел пару "грязных" примеров решающих мою проблему. Но суть в том что решения не идеальные и хочется общего подхода.

Patterns.ask(actor, msg, duration); как сделать так чтобы это заработало и все, весь вопрос.
...
Рейтинг: 0 / 0
получить ответ от актора в акка
    #40048423
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
lleming
пропущено...


куда вставить месье? API еще нет непонятно как вызвать этот метод да так чтобы скомпилирвоался код а точку уже ставить хочешь?
я имел ввиду так:
1 привет мир на акторах
2 ловить сообщения штатные акторов
3 добавить в актор до сообщения
4 ловить их тоже.
Какой пункт непонятен?
Это логирование а не Пошаговая.


уж все давно готово.
так что делать с Patterns.ask(actor, msg, duration) ?
...
Рейтинг: 0 / 0
получить ответ от актора в акка
    #40048424
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming
mayton
В первом посту ты захотел из актора как из функции получить результат. Актор скорее всего так не работает.
Его юзкейс предполагает что он либо пошлет парочку месседжей либо создаст парочку новых акторов.

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

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


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

значит есть способы но непонятно как пока.

способы то есть.

послать сообщение, ждать пока оно будет отработано, все это время висеть

НО т.к. акка не гарантирует доставку (и обработку) сообщения, в высоконагруженных системах вполне реально получить и бутылочные горлышки (например закончились HTTP потоки на сервере) и зависшие потоки которые ждуть обработки умерших сообщений и т.д. Т.ч. система начинает обрастать guardian'ами и всеким прочим велосипедами со страшной силой.

IMHO & AFAIK

lleming

см первый пост. Как из не актора (сервиса) узнать состояние актора. Не важно какой сервис spring boot, jersy, apache common, quarkus.

IMHO

В общем случае на гарантированный момент времени - никак. Или нужно городить велосипеды.

lleming

чет не могу понять при чем здесь остановить время

Разные акторы могут работать в разных потоках.
pure-java код и акторы - точно в разных
В тот момент, когда ты получил состояние актора, у актора это состояние может уже поменяться.

Или нужны велосипеды

IMHO
lleming

возьми CopyOnWriteArrayList

CopyOnWrite тебе не дает "состояние". Он как раз и дает копию на какой-то момент в прошлом, без гарантии, что это состояние не поменялось.

Еще хуже, если тебе хочется/нужно согласованное состояние нескольких акторов. Пока ты будешь опрашивать один актор, состояние соседних может поменяться.

IMHO

Note : На самом деле тут ОЧЕНЬ МАЛО людей которые ЗНАЮТ AKKA. Некоторые возможно с ней сталкивались на реальных проектах (например я где-то 3-4 месяца), некоторые игрались/читали книжки. Но это не есть знания. Например у меня, тот опыт который был на реальном проекте, скорее был опыт как не надо делать. И к моменту, когда я пришел на проект, АККА медленно но верно все больше заменялась велосипедами
...
Рейтинг: 0 / 0
получить ответ от актора в акка
    #40048431
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming
PetroNotC Sharp
lleming,
Давай начнём с теории и потом к практике. Акка не имеет глобальной консистентности данных. Согласен?


Дискутировать не хочется абстрактно ни к чему это не приведет. Я привел пару "грязных" примеров решающих мою проблему. Но суть в том что решения не идеальные и хочется общего подхода.

Patterns.ask(actor, msg, duration); как сделать так чтобы это заработало и все, весь вопрос.

Ему 4 чела говорят что задача странная. А он - дискутировать не хочу)))
...
Рейтинг: 0 / 0
получить ответ от актора в акка
    #40048438
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну чтото в этом роде там я предполагаю

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
class MyActor extends AbstractBehavior<Comamnd>{

}

//это динамическипй актор создаваемый при вызове Patterns.ask
class DynamicActor extends Behavior{
   private final ComputableFuture<Object> future;

   public void consume(final Object result){
             future.complete(result);
   }
}

Patterns.ask(actor, msg, duration) по сути

public CompletedStage<Object> ask(actor, msg, duration){
           CompletatedStage<Object> future = new CompletableFuture();
           replyTo = AkksSystem.spawn(DynamicActor.create(future)); // what ever internal manager of dynamic actors for reply, pooled or not
           actor.tell(new InternalMsg(msg)); //вызов к обвязке ну например к какомуто методу из AbstractBehavior который уже знает что нужно replyTo сделать в конце, остается дело за малым получить результат
            //и здесь непонятно откуда акка знает какой именно метод нужно вызвать поскольку msg тип она знает и может вызвать 
            // actor.myMethod(msg) по типу сообщения, но этот метод не возвращает результат 

}
...
Рейтинг: 0 / 0
получить ответ от актора в акка
    #40048445
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,
Найди демку с ask
Future<Object> ask = Patterns.ask(ActorRef/ActorSelection, Object, timeout)
...
Рейтинг: 0 / 0
получить ответ от актора в акка
    #40048447
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,
Вот это позволяет снимки состояний
Agent<Config> agent = Agent.create(new Config(), getContext())
...
Рейтинг: 0 / 0
получить ответ от актора в акка
    #40048453
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
lleming,
Найди демку с ask
Future<Object> ask = Patterns.ask(ActorRef/ActorSelection, Object, timeout)


я с самого начала про это и говорю.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
class MyActor extends AbstractBehavior{
   interface Command{}
   interface SomeMessage implements Command{ INSTANCE}
   public Behavir<Command> someMessage(SomeMessage ref){
          System.out.println("Dru lalal");
   }
}

Future<Object> future = Patterns.ask(myActor, SomeMessage.INSTANCE, Duration.ofMillis(10000));



что здесь будет в Object ? Демок нет есть утверждения в javadoc что это работает.
...
Рейтинг: 0 / 0
получить ответ от актора в акка
    #40048458
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А долго еще мы будем бросаться огрызками кода? Может собрать какое-то подобие проекта?
...
Рейтинг: 0 / 0
получить ответ от актора в акка
    #40048462
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,
Обьект String не работает?
...
Рейтинг: 0 / 0
получить ответ от актора в акка
    #40048465
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,
Почему нельзя отправить строку а не свой навороченный объект чтобы всех запутать?
...
Рейтинг: 0 / 0
получить ответ от актора в акка
    #40048469
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
lleming,
Обьект String не работает?


пока не удалось даже скомпилировать, нужна какая то сигнатура но непонятно какая javadoc тоже молчит
...
Рейтинг: 0 / 0
получить ответ от актора в акка
    #40048470
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming, какую ошибку выдает компиллятор?
...
Рейтинг: 0 / 0
получить ответ от актора в акка
    #40048472
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,

Future<String> future = Patterns.ask(myActor, "писец" , Duration.ofMillis(10000));
...
Рейтинг: 0 / 0
получить ответ от актора в акка
    #40048490
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
can't resolve method ask

чорт, не обратил внимания изза простой ошибки. Из за того что сразу оба импортируются и имена синхронизиованы большей частью в разных пакетах. Ну по типу akka.types.Behaviors новое типа type safe api dsl, а есть "старое/классическое" они идут в паре типа
com.akka.Behavior и есть com.akka.typed.Behavior и я привык что они в паре идут и нужно просто имя пакета проверять и этого достаточно.


А тут оказалось нестандартно.
я пользовался com.akka.Patterns это из стандартного а из нового нужно было com.actor.typed.javadsl.AskPattern.

ну из плюсов я угадал как работает под капотом из callback акторов.
Всем спасибо
...
Рейтинг: 0 / 0
20 сообщений из 45, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / получить ответ от актора в акка
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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