Go to file
Christoph Stahl 6b021f335c Blatt 04 2024-05-09 18:24:41 +02:00
src/main Blatt 04 2024-05-09 18:24:41 +02:00
README.md Blatt 04 2024-05-09 18:24:41 +02:00
build.gradle Update build.gradle 2024-05-01 20:38:10 +02:00

README.md

Blatt 04 - Timed Messages

In diesem Blatt ging es allen voran, um die möglichkeit Zeitgesteuert Nachrichten zu senden. Möglich macht es der TimerScheduler.

Damit ein Aktor zugriff auf einen TimerScheduler hat, muss der Aktor damit erstellt werden. Anstelle dem regulärem

public static Behavior<Message> create(... arguments ...) {
    return Behaviors.setup(context -> new Actor(context, ... arguments ...));
}

muss ein Aktor nun mit Timers erstellt werden.

public static Behavior<Message> create(... arguments ...) {
    return Behaviors.setup(context -> Behaviors.withTimers(timers -> new Actor(context, timers, ... arguments ...)));
}

Entsprechend muss im Konstruktor dann auch an der entsprechenden Stelle ein TimerScheduler erwartet werden.

private Actor(ActorContext<Message> context, TimerScheduler<Message> timers, ... arguments ...) {
    super(context);
    this.timers = timers; // wir speichern uns einfach den TimerScheduler
    // restliche argumente setzen
}

Nun kann der TimerScheduler genutzt werden. Grundsätzlich wird mit dem TimerScheduler eine Nachricht nach einer bestimmten Zeit an sich selbst gesendet. Diese muss (wie jede Nachricht) dann auch behandelt werden.

Der Code

this.timers.startSingleTimer(new Message(), Duration.ofSeconds(10));

sendet eine Nachricht (Message) nach 10 Sekunden an sich selbst.

TimerScheduler können noch mehr, aber das ist erstmal alles, was zum Verständnis der Aufgabe gebraucht wird.